2012-10-20 109 views
2

项目我在网络上的一些例子,人们传递形式的函数,然后他们只使用该项目的ID来访问它像发现:jQuery的 - 访问形式通过功能

<form id="frm"> 
<input type="text" id="textbox" name="textbox" value="some value" /> 
</form> 

<script> 
console.log(getelementval("#frm")); 

function getelementval(frm) { 
return frm.textbox.val(); 
} 
</script> 

但萤火告诉我,frm.textbox是不确定的......然后我在寻找它为什么上不了网工作,但我没有发现任何解释这个选项,以及如何使用它。 任何线索?

+0

如果你有jQuery,为什么会用这个丑陋? – kapa

回答

3

你将不得不修改JS略,使这项工作:

function getelementval(frm) { 
    return $(frm)[0].textbox.value; 
} 

演示:http://jsfiddle.net/gdZEK/2/

  • $(frm)返回选择相匹配的元素。
  • [0]获取实际的DOM元素。
  • .textbox作品的DOM元素而已,不是jQuery的对象。它匹配[name='textbox']。以被用来代替.val()
  • .value需要,.textbox不是jQuery对象。

老实说,我实在不明白这是怎么比只使用jQuery的好:

$('#frm input[name="textbox"]').val(); 
+0

+1的解释 –

+1

+1的正常jQuery代码:) – kapa

+0

@bažmegakapa同意。 + 1 - 即使没有:-)请参阅修订:-) –

1

这是纯JavaScript,而不是JQuery的

function getelementval(frm) { 
    var f = document.getElementById(frm); 
    return f.textbox.value; 
} 

console.log(getelementval("frm")); 

JQuery的版本

function getelementval(frm) { 
    var f = $(frm)[0]; 
    return f.textbox.value; 
} 

console.log(getelementval("#frm")); 
+0

这是不是与jQuery做正常的方式,但vanillaJS方法是很好的参考 –

+0

JQuery的东西,可能会导致混乱 - 我只是想保持它简单明了 – codingbiz