Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery(#id).val()与getElementById(#id).value_Javascript_Jquery - Fatal编程技术网

Javascript jQuery(#id).val()与getElementById(#id).value

Javascript jQuery(#id).val()与getElementById(#id).value,javascript,jquery,Javascript,Jquery,我一直在搜索,但我只能找到关于其中一个的文章。哪一个更好 我正在制作一个小的网络应用程序,性能不是一个大问题,因为没有什么复杂的事情发生 我考虑使用jQuery的val()函数,因为它可能解决了我不知道的一些不一致性,但是getElementById.value更快(尽管最终用户不会注意到) 那么我应该用哪一个呢?jQuery的非本机方法是否值得降低性能以获得更高的兼容性 如果同时使用元素,.value将不起作用,而.val()将起作用 我不介意仅仅获得一个值的性能。如果希望获得最佳性能,可能根

我一直在搜索,但我只能找到关于其中一个的文章。哪一个更好

我正在制作一个小的网络应用程序,性能不是一个大问题,因为没有什么复杂的事情发生

我考虑使用jQuery的
val()
函数,因为它可能解决了我不知道的一些不一致性,但是
getElementById.value
更快(尽管最终用户不会注意到)

那么我应该用哪一个呢?jQuery的非本机方法是否值得降低性能以获得更高的兼容性

如果同时使用
元素,
.value
将不起作用,而
.val()
将起作用


我不介意仅仅获得一个值的性能。如果希望获得最佳性能,可能根本不应该使用库。

我会使用jQuery的val()。在我看来,更短的代码意味着更快的下载时间。

使用
jQuery().val()
document.getElementById().value
的最大优点是,如果没有匹配的元素,前者不会抛出错误,后者也会抛出错误
document.getElementById()
如果没有匹配的元素,则返回
null
,其中as
jQuery()
返回一个空的jQuery对象,该对象仍然支持所有方法(但
val()
将返回未定义的)


对表单元素使用
.value
时,不存在不一致性。但是,jQuery.val()标准化了用于在选择框中收集所选值的接口;在标准HTML中,您必须使用
.options[this.selectedIndex].value

jQuery
来处理许多小错误(请看下面),如果没有
jQuery
,我再也不会在浏览器中编写一行
javascript

  • 首先,
    val
    处理复选框组、选择、获取html和 喜欢
  • 其次,
    $
    允许您使用sizzle选择器,因此在将来,您可以 在
    ID
    CSS
    路径之间轻松切换
  • 第三,如果您 只需使用
    jQuery
    ,即可节省维护代码的时间 超过你承认你的用户看不到的任何加速。最后
    jQuery
    是一个非常流行、使用非常广泛的库。他们会成功的
    $
    val
    尽可能快

我最近一直在研究它的性能差异,毫不奇怪,使用vanilla JS获取值比使用jQuery更快。然而,jQuery为防止错误而提供的回退,如@Matt所提到的,是非常有用的。因此,我倾向于选择两个世界中最好的

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。