使用相同的ID更改按钮值

时间:2014-09-13 20:21:41

标签: javascript php

当我有这个时它工作正常。

//php
<input id="somename" type="button" value="Text1" />

//script
<script>
  document.getElementById('somename').onclick = function(){
    this.value = this.value === 'Text1' ? 'Text2' : 'Text1';
  }
</script>

但是当我有这个时它只适用于第一个按钮。

//php

<input id="somename" type="button" value="Text1" />
<input id="somename" type="button" value="Text1" />

//Script
<script>
  document.getElementById('somename').onclick = function(){
    this.value = this.value === 'Text1' ? 'Text2' : 'Text1';
  }
</script>

有没有办法为任意数量的按钮工作?我想对所有按钮使用相同的id和值。

提前谢谢!

3 个答案:

答案 0 :(得分:2)

你应该使用一个类,而不是一个id。您可以使用JQuery设置侦听器并更改somename类的所有元素的值:

<input class="somename" type="button" value="Text1" />
<input class="somename" type="button" value="Text1" />

<script>
  $('.somename').click(function(){$(this).val(this.value === 'Text1' ? 'Text2' : 'Text1')});
</script>

小提琴:http://jsfiddle.net/Lk6nfn2c/1/

答案 1 :(得分:2)

您应该只有一个元素,并且具有特定的 id 。请改用名称 HTML属性。因此,您可以通过执行 document.getElementsByClassName getElementsByName 来获取元素数组。

尝试使用纯粹的javascript

Array.prototype.forEach.call(document.getElementsByName('somename'), function(button){
    button.onclick = function(){
        this.value = this.value === 'Text1' ? 'Text2' : 'Text1';
    };
});

在HTML中,请记住更改 name 属性的 id 属性:

<input name="somename" type="button" value="Text1" />
<input name="somename" type="button" value="Text1" />

我已经让jsfiddle为你看到代码正常工作了。看看吧!

答案 2 :(得分:0)

使用class而不是id然后迭代它们

//php

<input class="somename" type="button" value="Text1" />
<input class="somename" type="button" value="Text1" />

//Script
<script>
   var someNamesElm = document.getElementsByClass('somename');
   var someNamesElmNbr = someNamesElm.length;
   for (var i = 0; i < someNamesElmNbr; i++) {
     someNamesElm[i].onclick = function(){
        this.value = this.value === 'Text1' ? 'Text2' : 'Text1';
     }        
  }
</script>