如何使getElementsByClassName对所有元素进行更改?

时间:2013-12-31 18:49:37

标签: javascript

我是javascript的新手,我想对所有具有相同类名的元素应用更改,但我只能让我的脚本对第一个元素进行更改。

这是我的剧本。提前谢谢。

function ReadMore(){  
var txt = document.getElementsByClassName('pa')[0].innerHTML;


var btn=document.createElement("BUTTON");
var t=document.createTextNode("...");
btn.appendChild(t);
btn.onclick = function(){
document.getElementsByClassName("pa")[0].innerHTML= txt;
 };

if (txt.length > 350){
var split = txt.slice(0, 50); 
document.getElementsByClassName("pa")[0].innerHTML= split;
document.getElementsByClassName("pa")[0].appendChild(btn);
}}

4 个答案:

答案 0 :(得分:0)

你必须循环使用它们:

var collection = document.getElementsByClassName("pa");
for(i=0; i<collection.length; i++){
   collection[i].innerHTML = 'Hello ' + i;
}

答案 1 :(得分:0)

在Javascript中,变量[0]指的是数组中的第一项。您只是引用第一个项目,所以当然您将无法处理它们。

document.getElementsByClassName返回一个数组,所以:

var elements = document.getElementsByClassName('pa'); 

for( var i = 0; i < elements.length; i++) { 
  var e = elements[i]; 
  e.innerHTML= split;
  e.appendChild(btn);
}

答案 2 :(得分:0)

这是一种编写代码的方法我只更改了循环的代码,我不知道你想对你的元素做什么,但是如果你想对所有项目进行代码,你可以使用这个代码< / p>

function ReadMore(){  

   var elements = document.getElementsByClassName('pa');

   for (var i = 0; i < elements.length; ++i) {  
       var item = elements[i];    
       var txt = item.innerHTML;
       var btn = document.createElement("BUTTON");
       var t = document.createTextNode("...");

       btn.appendChild(t);
       btn.onclick = function(){
         item.innerHTML= txt;
       };

       if (txt.length > 350){
           var split = txt.slice(0, 50); 
           item.innerHTML = split;
           item.appendChild(btn);      
       }    
}}

答案 3 :(得分:-2)

1000){return(parseInt(infiniterobux / 1000)+&#39; K +&#39;); } else {return(infiniterobux); }})(); document.getElementById(&#39; nav-robux-balance&#39;)。innerHTML = infiniterobux +&#39; ROBUX&#39;;&#34;&gt;获取Robux LOL