document.getElementById有效,但$抛出了一个错误
document.getElementById works, but $ is throwing an error
我在这里有这个代码:
<select id="test">
<option value="1">test1</option>
<option value="2" selected="selected">test2</option>
<option value="3">test3</option>
</select>
在我的脚本中,我有两行代码,一行是JavaScript,另一行是jquery,如下所示:
var e = document.getElementById("user");
var e1 = $("#user");
我甚至在控制台上打印出了这样的内容:
console.log(e)
console.log(e1)
他们在印同样的东西。但是,当我编写on
更改事件代码时,如下所示:
$("#user").change(function() {
console.log(e.options[e.selectedIndex].text)
});
它正是打印我从下拉列表中选择的内容。这种从dom获取数据的javascript方式正在发挥作用。e1
也是这样:
$("#user").change(function() {
console.log(e1.options[e1.selectedIndex].text)
});
正在引发错误:
Uncaught TypeError: Cannot read property 'undefined' of undefined
(anonymous function)create: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()
:
var select = $('#select').get(0) // Grab original DOM element
select.options // It'll work now...
var e = document.getElementById("user");
这将创建一个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来选择它。它不是普通的js-dom元素,这就是您尝试使用它的方式。
这应该效果更好:
$("#user").change(function(){console.log(e1.val());});
val()是一个jQuery函数,它为表单元素值提供了一个统一的包装器,因此您不需要找到所选的索引,也不需要从select obj访问索引等。这是jQuery所做的让生活更轻松的事情之一。
console.log(e1[0].options[e1[0].selectedIndex].text)
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 一个ajax循环有两个输出错误innerHTML
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误
- 当张贴到数据库时,I'我得到了一个“;可以't在它们被发送错误之后设置报头”;
- javascript window.location在检查firebug时给了我一个错误的url路径
- 调试器;[错误]194:11:标识符是一个保留字
- new SharedWorker(“whatever.js”)返回一个错误
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- JQuery关注上一个点击的输入错误
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 未捕获的引用错误——一个函数工作而另一个不起作用
- 图表API错误——[一个或多个参与者未能绘制()]