2017-08-03 117 views
-4

如何更改相同id輸入的所有值?在javascript中更改所有具有相同id的輸入值

<input type="hidden" id="secure" name="secure" value=""> 
<input type="hidden" id="secure" name="secure" value=""> 
<input type="hidden" id="secure" name="secure" value=""> 
<input type="hidden" id="secure" name="secure" value=""> 

我用

<script> 
document.getElementById("secure").value = '123456'; 
</script> 

但只有第一個變化。

<input type="hidden" id="secure" name="secure" value="123456"> 
<input type="hidden" id="secure" name="secure" value=""> 
<input type="hidden" id="secure" name="secure" value=""> 
<input type="hidden" id="secure" name="secure" value=""> 
+0

你必須使用'class',而不是'id' –

+7

'id's應該是在文檔中是唯一的。 – Teemu

+1

同名怎麼樣? @Teemu –

回答

2

ID應該是唯一的 - 這就是他們的觀點。類用於相反的用途,即可能有多個單個實例的情況。

Assumimg你改變你的ID,以類,我們可以做到以下幾點:

[].forEach.call(document.querySelectorAll('.secure'), function(el) { 
    el.value = '123456'; 
}); 
+0

fyi .. querySelectorAll()有它自己的'forEach'也 – charlietfl

+1

我似乎記得瀏覽器的支持是不完整的。 – Utkanos

1

您需要更改id="secure"class="secure"第一

HTML:

<input type="hidden" class="secure" name="secure" value=""> 
<input type="hidden" class="secure" name="secure" value=""> 
<input type="hidden" class="secure" name="secure" value=""> 
<input type="hidden" class="secure" name="secure" value=""> 

的JavaScript :

<script> 
var els = document.getElementsByClassName("secure"); 
Array.prototype.forEach.call(els, function(el) { 
    // Do stuff here 
    el.setAttribute('123456'); 
}); 
</script> 
+0

這將只更新一個元素。他想要全部更新。 – Utkanos

0

您需要添加一個類文檔中的每個元素重複的ID是不允許所以我們可以更好地保持通用類我們的元素[我也改變了你的元素的ID保持獨特。 getElementsByClassName()返回DOM的nodeList。我們遍歷元素並且放置一些值。最後爲了測試,我通過id打印值。

<input type="hidden" id="secure1" name="secure" value="" class="secure"> 
 
<input type="hidden" id="secure2" name="secure" value="" class="secure"> 
 
<input type="hidden" id="secure3" name="secure" value="" class="secure"> 
 
<input type="hidden" id="secure4" name="secure" value="" class="secure"> 
 

 
<script> 
 
var list = document.getElementsByClassName("secure"); 
 
for(var i = 0; i< list.length;i++){ 
 
\t document.getElementsByClassName("secure")[i].value='123456' 
 
} 
 
console.log(document.getElementById('secure2').value); 
 
</script>

0

不要使用相同的ID多好朋友倍。使用類而不是id。要查看結果,我從您的HTML中刪除type="hidden"

var list = document.getElementsByClassName("secure"); 
 
for (var i = 0; i < list.length; i++) { 
 
list[i].setAttribute("value", "12345"); 
 
}
<input name="secure" value="" class="secure" /> 
 
<input name="secure" value="" class="secure" /> 
 
<input name="secure" value="" class="secure" /> 
 
<input name="secure" value="" class="secure" />

0

這工作 - 需要通過類通過所有的元素引用,然後循環真正改變的值。

<div><input type="text" class="secure" id="secure1" name="secure" value="123456"></div> 
 
<div><input type="text" class="secure" id="secure2" name="secure" value="123456"></div> 
 
<div><input type="text" class="secure" id="secure3" name="secure" value="123456"></div> 
 
<div><input type="text" class="secure" id="secure4" name="secure" value="123456"></div> 
 

 
<script> 
 
function myFunction() { 
 
    x=document.getElementsByClassName("secure"); 
 
\t \t for (i = 0; i < x.length; i++) { 
 
    \t x[i].value="100"; 
 
    } 
 
} 
 
</script> 
 

 
<button onclick="myFunction()"> 
 
click me 
 
</button>

相關問題