Javascript不执行分支IF语句

use*_*628 0 html javascript forms jquery

为什么这种情况总是执行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');
});
 }
});
Run Code Online (Sandbox Code Playgroud)

表单有几个具有不同选项值的选择标记,如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

我看不出if-else语句有什么问题.

谢谢

编辑

感谢所有伟大的建议,我认为代码的结构方式与@trebuchet建议的方式相同:

$("#analyses").bind("change",function(){
.............code.......
});
Run Code Online (Sandbox Code Playgroud)

谢谢大家.

McG*_*gle 6

你实际上不能value在HTML select元素上使用它 - 它有属性selectedIndex,但不是selectedValue.但是JQuery确实val()在select元素上实现:

if ($("#analyses").val() == 'distance')
Run Code Online (Sandbox Code Playgroud)

如果您使用直接Javascript进行操作,则必须首先获取所选索引,然后是option元素中的值:

var sel = document.getElementById("analyses");
if (sel.options[sel.selectedIndex].value)
Run Code Online (Sandbox Code Playgroud)

为了回答你的问题,使用原始代码,Javascript将始终执行else分支,因为document.getElementById("analyses").valueundefined,在一个布尔语句中哪个Javascript被强制转换为"false".

小提琴.