更好地练习Jquery vs Document.formname.formelement.value

时间:2013-04-24 11:22:05

标签: javascript jquery html forms

快速提问。

我目前正在做一些js(前/前端验证)我的问题是哪一行代码更好用。我自己总是使用这种方法。

 document.formname.forminput.value

而不是

 $('formelement').val()

我建议你使用哪种方法,我认为第一种方法更好,因为它不依赖外部库来提交函数?

谢谢,Tony。

7 个答案:

答案 0 :(得分:2)

这对你有用。

如果您只想使用纯JavaScript:

document.formname.forminput.value    

 document.getElementById('formelement').value

如果你想使用jQuery框架:

$('formelement').val()

我个人喜欢jQuery的方式,因为它更干净, 但如果你使用它,总是知道简单的JavaScript方式。

在stackexchange上查看这篇文章,了解有关纯JavaScript与jQuery的更详细讨论: https://softwareengineering.stackexchange.com/questions/122191/what-benefits-are-there-to-native-javascript-development

答案 1 :(得分:1)

根据JS Perf的说法,本地DOM方法,document.querySelector() 最快,你在问题中发布的本机DOM方法最慢。据推测,“快速”与高效相关,而且似乎选择id(因为jQuery和document.querySelector()方法都使用)是最快的选择方法。

JS Perf链接如下,基于以下HTML:

<form action="#" method="post" name="trek">
  <fieldset>
    <label for="input1">
      Input One:
    </label>
    <input id="input1" value="An input, Jim; but just as we know it..." />
  </fieldset>
  <fieldset>
    <label for="input2">
      Input Two:
    </label>
    <input id="input2" value="'Beam me up, Scotty!' attributed to, but never said, in Star Trek."
    />
  </fieldset>
</form>

原生DOM:

var input1 = document.trek.input1.value,
    input2 = document.trek.input2.value;
console.log(input1, input2);

更多DOM:

var input1 = document.getElementById('input1').value,
    input2 = document.getElementById('input2').value;
console.log(input1, input2);

更多DOM,d.qS:

var input1 = document.querySelector('#input1').value,
    input2 = document.querySelector('#input2').value;
console.log(input1, input2);

和jQuery:

var input1 = $('#input1').val(),
    input2 = $('#input2').val();
console.log(input1, input2);

JS Perf

参考文献:

答案 2 :(得分:1)

“更好”很难定义。虽然在输入字段中添加ID并在jQuery中调用$('#inputid')可能会更快,但“更快”可能是第一个。但是差异非常小,以至于任何人都不会考虑对这种选择器进行微观优化。

它们在简单地从已知输入字段获取值时也是相同的,但是如果找不到DOM元素,则jQuery不会抛出异常,而如果document.formname.forminput.value formname将抛出异常在DOM中不存在。如果找不到DOM元素,jQuery的.val()将只返回undefined

无需添加,jQuery的API(包括val())在不同的输入元素和浏览器之间更加一致,也可以用作设置器。

答案 3 :(得分:0)

两者都很好

如果您使用的是document.formname.forminput.value,那意味着您使用的是普通的javascript

但是如果你使用$('formelement')。val()它来自jquery,这是javascript的框架之一。使用时,您应该下载jquery.js并将其包含在您的网页中。

答案 4 :(得分:0)

实际上没有正确答案...答案取决于使用它的人..

第一个是普通的javascript,所以你说不需要外部库文件..

第二个是使用jquery ....

我会选择第二个原因,它的简短,可读和清洁

答案 5 :(得分:0)

实际上在普通JavaScript中你有

document.formname.fieldName.value
document.getElementsByName("fieldName")[0].value
document.getElementById("fieldID")[0].value

而jQuery中的类似访问将是

$("input[name='fieldName'"].val();

$("#fieldID"].val();

一定要了解差异

如果由于其他原因在页面中没有jQuery而不是获取表单字段的值,那么在我看来jQuery是没有必要的。 但是,如果您正在做一些稍微复杂和交叉浏览的事情,比如Ajax或事件处理,请在页面上找到满足您所有需求的jQuery

答案 6 :(得分:0)

在这种情况下,没有理由使用jQuery而不是javascript。