2013-01-12 61 views
1

你能幫我用普通的JavaScript以最有效的方式編寫這個函數嗎?如何在純JavaScript中編寫這個JQuery函數?

//Selects all elements matched by <input> that have a name value 
//exactly equal to myname. 
$("input[@name=myname]") 
+2

是不是真的有一個「有效」的方式在Javascript比使用jQuery是使用完全相同的方法等來做到這一點。 jQuery在使這些選擇器非常高效方面做了很多工作。有沒有理由不能使用jQuery,或者這只是一個學術練習? – Codeman

+0

不,這不是一項學術活動,我在我的程序中使用JavaScript,並且每次加載頁面時評估JQuery都不是很好.. – Vor

+1

好嗎?但是很多現有的網站都這樣做 - 成功;甚至是stackoverflow。 –

回答

5
var els = document.getElementsByTagName("input"), 
    arr = []; 

for (var i = 0, l = els.length; i < l; i++) { 
    if (els.name === "myname") { 
     arr.push(els); 
    } 
} 

console.log(arr); 

還是現代的瀏覽器:

var arr = document.querySelectorAll("input[name='myname']"); 
console.log(arr); 
+0

非常感謝你!第二種方法看起來非常好,乾淨 – Vor

+0

@Vor然而它[不支持IE <8](https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll#Browser_compatibility)。 – VisioN

+0

這很好,只要webkit支持它=) – Vor

3

假設在表單中每個元素都有唯一的名稱,這個方法是最快的:

var element = document.MyForm.getElementsByName('myname')[0]; 

document.querySelectorAll()可能會更快如果name由不同標籤的元素共享,但是support is limited

+0

對不起,如果我的問題不夠清楚,但'name'只是一個例子 – Vor

+0

但是,無論如何感謝 – Vor

4

這是你在找什麼:

document.getElementsByName("myname"); 
+0

不,它不是,這只是一個例子,我不會在真實程序中使用「名稱」 – Vor

相關問題