Javascript jquery的val()有时不适用于IE上的select元素

Javascript jquery的val()有时不适用于IE上的select元素,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,只需检查以下代码 <script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> <script type="text/javascript"> function s() { supplier = jQuery('#sup').val(); status = jQuery('#sta')

只需检查以下代码

<script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

<script type="text/javascript">
 function s() {
    supplier = jQuery('#sup').val();
    status = jQuery('#sta').val();
    alert('Supplier:'+supplier+'#Status:'+status); 
 }
</script>

       <select id="sup">
            <option value="empty">Supplier</option>
            <option value="1">supplier1</option>
            <option value="2">supplier2</option>
        </select>

        <select id="sta">
            <option value="empty">Status</option>
            <option value="1">status1</option>
            <option value="2">status2</option>

        </select>

        <button type="button" onclick='s()'>Show</button>
当我点击show按钮时,我得到的是FF中的status值。 但在ie中,alert显示状态包含空字符串

请注意,供应商和状态具有相同的结构。
供应商的值在两个浏览器中都得到了正确的显示。

它被破坏,因为您正在使用全局状态变量,该变量应用于设置状态栏消息。您需要输入:var status 在函数s中,不使用status,也不使用其他变量名

看这把小提琴:随着变化。我已经在IE9中测试过了,现在可以使用了。

试试:

function s() {
   var supplier = jQuery('#sup').val();
    var status = jQuery('#sta').val();
    alert('Supplier:'+supplier+'#Status:'+status); 
 }

必须使用关键字var声明局部变量。

始终在变量声明之前定义var jQuery的1.2.6版非常旧。是的,您的变量应该用var声明。您知道您使用的是一个已经有近4年历史的jQuery版本。对吗?@Ponity&jamice:在我的应用程序中,我使用的是jquery的最新版本。我从我的应用程序中准备了一个简单的代码来演示这个问题。@sandeep这是不需要的,如果您声明没有var,它将是一个全局变量great!我将变量名“status”更改为“status”。现在它工作正常,没有添加“var”关键字。@Habeeb:请阅读完整的句子,在javascript中,如果您必须声明一个局部变量,您必须使用关键字“var”声明它,否则它将不再是局部变量,它将自动变为全局变量。对此评论,我深表歉意。无论如何,这里的问题是我使用了一个关键字。这不是局部-全局范围的问题。