Оператор присваивания возвращает значение назначенного значения . Итак, я мог бы использовать его в такой ситуации:
if(x = getMyNumber())
Затем я присваиваю x
значение, возвращаемое getMyNumber
, и проверяю, не равен ли он нулю.
Избегайте этого, я привел вам пример, чтобы помочь вам понять это.
Редактировать: добавление Просто предложение (может понравиться).
Чтобы избежать таких ошибок, вплоть до некоторых расширений, нужно записать условие if как if(NULL == ptr)
вместо if(ptr == NULL)
, потому что при неправильном написании оператора проверки равенства ==
в качестве оператора =
, компиляция выдаст ошибку lvalue с if(NULL = ptr)
, но if(res = NULL)
, переданную компилятором (что вы не имеете в виду), и останется ошибкой в коде для среды выполнения.
По той же причине я предпочитаю писать if(getMyNumber() ==x)
вместо if(x == getMyNumber())
Следует также читать: Критика в отношении этого вида кода.
Более уместно подходить к этой проблеме с точки зрения того, что форма будет иметь действие по умолчанию, привязанное к одной кнопке отправки, а затем альтернативное действие, привязанное к простой кнопке.
На каждой из ваших кнопок вы можете иметь следующее:
<input type="button" name="newWin" onclick="frmSubmitSameWin();">
<input type="button" name="SameWin" onclick="frmSubmitNewWin();">
Затем несколько небольших js-функций;
<script type="text/javascript">
function frmSubmitSameWin() {
form.target = '';
form.submit();
}
function frmSubmitNewWin() {
form.target = '_blank';
form.submit();
}
</script>
Это должно помочь.
В этом примере взято из
http://www.webdeveloper.com/forum/showthread.php?t=75170
Вы можете увидеть, как изменить цель на событии OnClick кнопки.
function subm(f,newtarget)
{
document.myform.target = newtarget ;
f.submit();
}
<FORM name="myform" method="post" action="" target="" >
<INPUT type="button" name="Submit" value="Submit" onclick="subm(this.form,'_self');">
<INPUT type="button" name="Submit" value="Submit" onclick="subm(this.form,'_blank');">
Я делаю это на стороне сервера. То есть форма всегда отправляется одной и той же цели, но у меня есть сценарий на стороне сервера, который отвечает за перенаправление в соответствующее место в зависимости от того, какая кнопка была нажата.
Если у вас несколько кнопок, например
<form action="mypage" method="get">
<input type="submit" name="retry" value="Retry" />
<input type="submit" name="abort" value="Abort" />
</form>
Примечание: Я использовал GET, но он работает и для POST
Затем вы можете легко определить, какая кнопка была нажата - если переменная retry
существует и имеет значение, то была нажата повторная попытка, и если переменная abort
существует и имеет значение, то была нажата кнопка abort. Эти знания затем можно использовать для перенаправления в соответствующее место.
Этот метод не требует Javascript.
Примечание: некоторые браузеры могут отправлять форму без нажатия каких-либо кнопок (путем нажатия клавиши ввода). Как бы нестандартно это ни было, вы должны это учитывать, указав действие по умолчанию
и активируя это всякий раз, когда не нажимались кнопки. Другими словами, убедитесь, что ваша форма делает что-то разумное (будь то отображая полезное сообщение об ошибке или предполагая значение по умолчанию), когда кто-то хиты вводятся в другом элементе формы вместо нажатия на кнопку отправки кнопку, а не просто сломать.
Вот краткий пример сценария, который отображает форму, изменяющую целевой тип:
<script type="text/javascript">
function myTarget(form) {
for (i = 0; i < form.target_type.length; i++) {
if (form.target_type[i].checked)
val = form.target_type[i].value;
}
form.target = val;
return true;
}
</script>
<form action="" onSubmit="return myTarget(this);">
<input type="radio" name="target_type" value="_self" checked /> Self <br/>
<input type="radio" name="target_type" value="_blank" /> Blank <br/>
<input type="submit">
</form>
Отправьте обе кнопки на текущую страницу, а затем добавьте этот код вверху:
<?php
if(isset($_GET['firstButtonName'])
header("Location: first-target.php?var1={$_GET['var1']}&var2={$_GET['var2']}");
if(isset($_GET['secondButtonName'])
header("Location: second-target.php?var1={$_GET['var1']}&var2={$_GET['var2']}");
?>
Это также можно сделать с помощью $ _SESSION, если вы не хотите, чтобы они видели переменные.