更改 id= 值的所有元素

Change all elements with id='s value

我有一个由 php for 循环生成的输入按钮。

这是它的输出:

<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">
<input type="submit" name="submit" id="submit" value="Submit">

如何更改 ID 或名称为 "submit" 的所有输入的值?

我试过 getElementById 但只改变了输入:

<script>
var submit_button = document.getElementById('submit');
submit_button.value = 'Next';
</script>

我试过 getElementsByName 但根本没用:

<script>
var submit_button = document.getElementsByName('submit');
submit_button.value = 'Next';
</script>

如何更改所有 input 的值?

我想要普通的 javascript。如果不能使用常规 javascript,jquery 也可以。

ID 必须是唯一的,所以更改它们。

您可以使用 document.getElementsByName. Because this returns a NodeList you can use the Array.forEach 来更改值属性。

document.getElementsByName('submit').forEach(function(ele, idx) {
   ele.value = 'Next';
})
<input type="submit" name="submit" id="submit1" value="Submit">
<input type="submit" name="submit" id="submit2" value="Submit">
<input type="submit" name="submit" id="submit3" value="Submit">
<input type="submit" name="submit" id="submit4" value="Submit">
<input type="submit" name="submit" id="submit5" value="Submit">
<input type="submit" name="submit" id="submit6" value="Submit">
<input type="submit" name="submit" id="submit7" value="Submit">
<input type="submit" name="submit" id="submit8" value="Submit">

您可以像这样使用 jquery:

$("#submit").val("Next");

你可以使用 class 而不是使用,因为 id 是唯一的,正如@RiggsFolly 建议的那样,所以你可以添加一个 class 例如 class="btn" 并且在你的 js 块中你可以说:

var x = document.getElementsByClassName("btn");

var x = document.getElementsByClassName("btn");
    
    for(i=0; i<x.length; i++){
     x[i].value = "next";
    }
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">
<input type="submit" name="submit" id="submit" value="Submit" class="btn">

在jQuery中:

$('input[name=submit]').val('Next');

或者在原版 JS 中:

document.querySelectorAll('input[name=submit]').forEach(function(node){
    node.value = 'Next'
});

或者为了缩短实际调用时间,将 querySelectorAll 放入可重用的实用函数中:

function $$(selector, ctx=document){
    return Array.from(ctx.querySelectorAll(selector));
}


$$('input[name=submit]').forEach(function(node){
    node.value = 'Next';
});

为什么要将其包装到数组中? querySelectorAll returns 一个 NodeList,而不是一个数组,因此它提供了 forEach,但它不提供数组所具有的所有其他简洁的小功能,例如 filtermap, slice

id 应该是唯一的,getElementById 将 return 只有一个元素。

相反,您应该在标签上使用 class 属性并使用 getElementsByClassName 获取列表。此 return 是一个集合,您可以使用 for 循环对其进行迭代。

for ( element in document.getElementsByClassName("submit") )
  element.value = "Next"