我有一个包含单选按钮选项的表单,我想用它来指示一组变量的值。
单选按钮如下:
<table style="width:90%">
<tr><td><input type="radio" id="opt1" name ="selectOpt" value="option1"
checked="checked"/> Option 1</td><td><input type="radio" id="opt2" name ="selectOpt"
value="option2"/> Option 2</td></tr>
</table>
我可以回显单选按钮的值
<p id="selection">
<?php echo $_POST["selectOpt"];?></p>
所以我确信该变量正在被结转。由于我将 $_POST 值传递给一个元素,以便用户看到选择了什么值,我想我会使用元素 ID 来获取我的 if-else 语句的值。
这是我的 if-else 语句的样子:
$(document).ready(function () {
var template = $("#selection").text();
if(template == 'option1'){
var part1 = "beautifulweather";
var part2 = "ishouldgooutside";
}
else if(template == 'option2'){
var part1 = "isthatrain";
var part2 = "imstayinginside";
}
weather = "www.weather.com/" + part1 + "ithink" + part2;
然后,我将此 URL 传递给一个具有空 href 的按钮,其中包含以下几行:
var a = document.getElementById('weatherbtn');
a.href = weather;
但是,每当我单击链接时,第 1 部分和第 2 部分显示为未定义。我在 if-else 之后使用了 document.write(template, part1, part2) 并确认它打印 option1undefinedundefined。
我在这里做错了什么?
解决了
我需要更改的一般格式问题(正如这里几乎每个人都指出的那样):我需要首先声明我的变量并从我的 if-else 语句(part1/part2)中分配的变量中删除 var 关键字。
我也绕过了
元素并直接在模板变量中传递回声。工作代码如下所示:
$(document).ready(function (){
var part1, part2, template;
var template = '<?php echo $_POST["selectOpt"];?>';
if(template == 'option1'){
part1 = "beautifulweather";
part2 = "ishouldgooutside";
}
else if(template == 'option2'){
part1 = "isthatrain";
part2 = "imstayinginside";
}
天气=“www.weather.com/”+第1部分+“ithink”+第2部分;
谢谢大家 - 特别是 cdhowie 关于 JS 不是块作用域的说明。那让我发疯了。