Javascript document.getElementById正常工作,但$抛出错误
我这里有这个代码:Javascript document.getElementById正常工作,但$抛出错误,javascript,jquery,Javascript,Jquery,我这里有这个代码: <select id="test"> <option value="1">test1</option> <option value="2" selected="selected">test2</option> <option value="3">test3</option> </select> 我甚至在我的控制台上打印出如下内容:
<select id="test">
<option value="1">test1</option>
<option value="2" selected="selected">test2</option>
<option value="3">test3</option>
</select>
我甚至在我的控制台上打印出如下内容:
console.log(e)
console.log(e1)
$("#user").change(function() {
console.log(e.options[e.selectedIndex].text)
});
他们正在印刷同样的东西。但当我写一个关于变更的事件代码时,如下所示:
console.log(e)
console.log(e1)
$("#user").change(function() {
console.log(e.options[e.selectedIndex].text)
});
它正是打印我从下拉列表中选择的内容。这种从dom获取的javascript方法正在工作。e1也是这样:
var e = document.getElementById("user");
var e1 = $("#user");
$("#user").change(function() {
console.log(e1.options[e1.selectedIndex].text)
});
正在抛出错误:
未捕获的TypeError:无法读取undefined的属性“undefined”
匿名函数创建:167
f、 event.dispatchjquery-1.7.1.min.js:3
f、 event.add.i.h.handle.i
从chrome的开发者工具看
发生什么事了?我对Javascript和jquery都是新手!在我的例子中,为什么jquery不起作用?因为您使用的是jquery,e1是一个jquery对象,请尝试:
console.log(e1.find('option:selected').text())
要获取实际元素,可以使用get:
console.loge1[0]。选项[e1[0]。已选择索引]。文本
这将创建一个javascript对象
var e1 = $("#user");
这将创建一个jquery对象。您不能在此服务器上使用javascript属性。您必须使用jquery属性。您在文章顶部提供的选择菜单的id为“test”而不是“user”。我假设您实际使用的代码的id为“user”。e1是一个jQuery对象,因此要访问它的值,请使用e1.val而不是e1.options[e1.selectedIndex].text。您将javascript代码与jQuery代码混合使用。e1是一个jQuery对象,因为您使用jQuery来选择它。它不是普通的JSDOM元素,这正是您试图使用它的方式 这应该更好地发挥作用: $user.changefunction{ console.loge1.val; };
val是一个jQuery函数,它为表单元素值提供了一个统一的包装器,因此您无需查找选定的索引,也无需从select obj访问该索引等。这是jQuery所做的使生活更轻松的事情之一。实际上,它们并不打印相同的内容。另一个打印DOM对象,另一个打印jQuery对象。@Juhana:噢!console.log欺骗了我_因为它不仅仅是一个常规元素,而是一个jQuery集合。参见编辑