Javascript jQuery(#id).val()与getElementById(#id).value
我一直在搜索,但我只能找到关于其中一个的文章。哪一个更好 我正在制作一个小的网络应用程序,性能不是一个大问题,因为没有什么复杂的事情发生 我考虑使用jQuery的Javascript jQuery(#id).val()与getElementById(#id).value,javascript,jquery,Javascript,Jquery,我一直在搜索,但我只能找到关于其中一个的文章。哪一个更好 我正在制作一个小的网络应用程序,性能不是一个大问题,因为没有什么复杂的事情发生 我考虑使用jQuery的val()函数,因为它可能解决了我不知道的一些不一致性,但是getElementById.value更快(尽管最终用户不会注意到) 那么我应该用哪一个呢?jQuery的非本机方法是否值得降低性能以获得更高的兼容性 如果同时使用元素,.value将不起作用,而.val()将起作用 我不介意仅仅获得一个值的性能。如果希望获得最佳性能,可能根
val()
函数,因为它可能解决了我不知道的一些不一致性,但是getElementById.value
更快(尽管最终用户不会注意到)
那么我应该用哪一个呢?jQuery的非本机方法是否值得降低性能以获得更高的兼容性 如果同时使用
元素,.value
将不起作用,而.val()
将起作用
我不介意仅仅获得一个值的性能。如果希望获得最佳性能,可能根本不应该使用库。我会使用jQuery的val()。在我看来,更短的代码意味着更快的下载时间。使用
jQuery().val()
比document.getElementById().value
的最大优点是,如果没有匹配的元素,前者不会抛出错误,后者也会抛出错误document.getElementById()
如果没有匹配的元素,则返回null
,其中asjQuery()
返回一个空的jQuery对象,该对象仍然支持所有方法(但val()
将返回未定义的)
对表单元素使用
.value
时,不存在不一致性。但是,jQuery.val()标准化了用于在选择框中收集所选值的接口;在标准HTML中,您必须使用.options[this.selectedIndex].value
jQuery
来处理许多小错误(请看下面),如果没有jQuery
,我再也不会在浏览器中编写一行javascript
- 首先,
处理复选框组、选择、获取html和 喜欢val
- 其次,
允许您使用sizzle选择器,因此在将来,您可以 在$
和ID
路径之间轻松切换CSS
- 第三,如果您
只需使用
,即可节省维护代码的时间 超过你承认你的用户看不到的任何加速。最后jQuery
是一个非常流行、使用非常广泛的库。他们会成功的jQuery
和$
尽可能快val
var $this = $(this),
$val = this.value || $this.val();
对于该条件语句,如果
this.value
尝试抛出错误,代码将返回jQuery.val()
方法。我认为使用纯Javascript
更快,原因如下:
js
catch(exeption)
(我认为…)jquery
jquery
js
在@johndoo的复选框上工作(以更好的方式)name=“sport[]”
然后您通过:var sports=document.forms['demoForm'].elements['sport[]]获取数组inJavascript
我正在寻找一个选择类型字段解决方案而不使用jQuery,我遇到了这个解决方案:
选择组是一个对象:HTMLCollection,它有一个lenght方法和一个selectedOptions属性,允许您迭代其标签属性,用所选选项填充数组,然后您可以使用:
...
vehicleCol = document.getElementById('vehiculo').selectedOptions;
vehiculos = [];
if (vehicleCol !== undefined) {
for (let i = 0; i < vehicleCol.length; i++) {
vehiculos.push(vehicleCol[i].label.toLowerCase())
}
}
...
。。。
vehicleCol=document.getElementById('VehicleLo')。选择选项;
Vehicleulos=[];
if(车辆控制!==未定义){
对于(设i=0;i
“过早优化是万恶之源。”——Donald KnuthIf如果您使用的是jQuery,是的。否则,我怀疑从document.getElementById('test')
到$('#test')
所节省的空间是否足以衡量库本身的31KB。当我们谈论使用jQuery时,我假设库已经由于其他原因加载,我不认为任何人加载jQuery只是为了获取字段值。事实上,在文本区域value
s中使用换行符的浏览器之间存在一些不一致,jQuery的val()
标准化了,尽管我宁愿它不这样做。@TimDown您有关于不一致的更多信息吗?在Chrome53、Firefox47和MacOSX上的Safari9.1上,至少没有。通过这个测试:@Dennis98:HTML5解决了这个问题,因为它已经标准化了在值中的任何换行符都使用LF字符,我认为所有最近的浏览器都符合这个标准。当然,旧IE,可能还有一些旧版本的Safari和/或Opera,使用CR+LF而不仅仅是LF。啊,好的。谢谢!:)请注意:val()不能(不幸地)处理复选框,至少没有任何有用的方式。它返回选中复选框时将设置的值,但不考虑是否选中该复选框+1因为没有jQuery就没有写一行JS。