为什么这个条件总是执行 ELSE 而不是 IF 分支。这是 JavaScript:
$(document).ready(function(){
if (document.getElementById("analyses").value == 'distance'){
loadScript('/static/distance.js', function()
{
console.log('done loading');
});
}else{
loadScript('/static/geoClusters.js', function()
{
console.log('done loading');
});
}
});
该表单有几个具有不同选项值的选择标签,如下所示:
<select name="analysis" id="analyses">
<option value="" disabled="disabled" selected="selected">Select Analysis</option>
<option value="distance">distance</option>
<option value="clustered">clustering</option>
</select>
我看不出 if-else 语句有什么问题。
谢谢
编辑
感谢所有很好的建议,我认为代码的结构方式是按照 @trebuchet 建议的方式工作的:
$("#analyses").bind("change",function(){
.............code.......
});
谢谢大家。
最佳答案
实际上,您不能像在 HTML select 元素上那样使用 value
——它具有属性 selectedIndex
,但没有 selectedValue
。不过,JQuery 确实在选择元素上实现了 val()
:
if ($("#analyses").val() == 'distance')
如果您直接使用 Javascript 执行此操作,则必须首先获取所选索引,然后获取 option
元素中的值:
var sel = document.getElementById("analyses");
if (sel.options[sel.selectedIndex].value)
<小时/>
为了回答你的问题,使用原始代码,Javascript将始终执行else
分支,因为document.getElementById("analysis").value
是 undefined
,Javascript 在 bool 语句中将其类型转换为“false”。
关于Javascript不执行分支IF语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734547/