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”声明它,否则它将不再是局部变量,它将自动变为全局变量。对此评论,我深表歉意。无论如何,这里的问题是我使用了一个关键字。这不是局部-全局范围的问题。