2012-01-19 4 views
22

私はそれがjqueryのと同等です見てきました:javascriptを使用して入力要素を値で選択するにはどうすればよいですか?

$('input[value="something"]'); 

しかし、どのようにあなたが純粋ジャバスクリプト(なしjQueryの)を使用して、それを選択します。

これまでのすべての回答をありがとうございますが、正しく動作していれば、入力値を別のものに変更する必要があります。でも、私は私が

<enter snippet to select element here>.value = "someOtherValue"; 

によってこれを行うことができます。しかし、それは容易ではないように見えます。何か案は。このような

+4

使用getElementsByTagNameの(DOMで定義されている)すべての入力タグのリストを取得し、その後(そのvalue属性を見て)Javascriptのコードでそれらをフィルタリングします。これを数回行った後、jQueryを避けたい理由を再考してください。しかし、 – Thilo

答えて

31

に一致する戻ります現代のブラウザie9 +(?実際にie9はわからない):

document.querySelectorAll("input[value=something]"); 
+0

これが機能しているかどうかわかりません、特定の値ですべての入力の値を変更する必要があります、 "someValue "を" SomeOtherValue "に設定します。 getInputsByValue( "someValue")を使用することでそれをやらせてはいません。value = "SomeOtherValue"; – Pieter888

+0

@ Pieter888答えがあなたの新しい質問ではなくあなたのオリジナルの質問に書かれているので、それは「機能しません」。結果の配列をループし、各要素の値を何かに設定するだけです。あなたは配列をループする方法を知っていますよね? – Esailija

+0

私はそれを得ました、迅速な対応のおかげで! – Pieter888

1

何かが動作します:

のjQueryを使用して
function getCheckboxByValue(v) { 
     var inputs = document.getElementsByTagName('input'); 
     for (var i = 0; i < inputs.length; i++) { 
       if(inputs[i].type == "checkbox" && inputs[i].value == v) { 
         return inputs[i]; 
       } 
     } 
     return false; 
} 
(function testCheckbox() { 
     getCheckboxByValue("1").checked = true; 
})(); 

は、しかし、はるかに良いでしょう。

+0

は最初のものだけを返します。 – Thilo

0
動作するはずです。このような

何か...

for(i in document.getElementsByTagName('input')) { 
    if(i.value == 'desiredValue') { 
     return i; 
    } 
} 

編集:これは、すべての配列は、IE6、IE7、IE8

function getInputsByValue(value) 
{ 
    var allInputs = document.getElementsByTagName("input"); 
    var results = []; 
    for(var x=0;x<allInputs.length;x++) 
     if(allInputs[x].value == value) 
      results.push(allInputs[x]); 
    return results; 
} 

として

var matches = []; 
for(i in document.getElementsByTagName('input')) { 
    if(i.value == 'desiredValue') { 
     matches.push(i); 
    } 
} 
+0

は、最初の一致を返すだけです – Thilo

+0

真っ直ぐな修正はそれを修正します – JamesHalsall

8

最近のブラウザ(https://developer.mozilla.org/En/DOM/Document.querySelectorAll)ではdocument.querySelectorAll()を使用できます。あなたは、例えば、input Sを反復処理し、値をチェックする必要があります古いブラウザの場合

var byValue = document.querySelectorAll('input[value="something"]'); 

var inputs = document.getElementsByTagName("input"), 
    i, 
    len, 
    byVal = [], 
    value = "something"; 

for (i = 0, len = inputs.length; i < len; i++) { 
    if (inputs[i].value === value) { 
     byVal.push(inputs[i]); 
    } 
} 
+1

+1は近代的なアプローチを使用しています – JamesHalsall

+0

===おそらく間違っています。.valueは常に文字列です –