Javascript不执行分支IF语句

标签 javascript jquery html forms

为什么这个条件总是执行 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”。

Fiddle.

关于Javascript不执行分支IF语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734547/

相关文章:

android - 使用 Android 模拟器和浏览器放大时页面上的元素(即 a、div、h1)移动

javascript - 我可以在 Bigquery JS UDF 中使用 `TextEncoder` 吗?

javascript - JQuery 自动完成后获取 ID 的值

jQuery .load - url 中的参数 - 多部分、多值

javascript - 在 Logo jquery 上添加了更多填充

css - 当 div 内的内容移到一侧时,将内容居中放置在页面中间

html - 使用文本而不是图像制作热区图 block (joomla 主题)

javascript - 浏览 Node.js 服务器时出现 502(代理错误)

javascript - Leaflet ReactJS Map 未完全显示图 block

在 AJAX 调用期间从 PHP 脚本调用时,PHP $connection->query($sql) 返回 FALSE?