改变元素的类别

时间:2015-02-09 16:24:47

标签: javascript css getelementbyid getelementsbyclassname

我想以某种方式设置浮动元素,这取决于它们的数量。

<div id="whatever">
   <div class="iwantthischangedto3elements">
      <a href="#">element 1</a>
      <a href="#">element 2</a>
      <a href="#">element 3</a>
   </div>
   <div class="iwantthischangedto2elements">
      <a href="#">element 1</a>
      <a href="#">element 2</a>
   </div>
</div>

我无法确定如何做到这一点。 我猜javascript是答案,但无法让它工作:

<script type="text/javascript">
function f() {
  var list = document.getElementById("whatever");
  var nbofelements = whatever.getElementsByTagName("a").length;
  return nbofelements ; 
  whatever.getElementsByTagName("div").className += "elements + nbofelements";      
}
</script>

感谢您的帮助,我真的很难用javascript ...

修改 谢谢大家的回答。 对不起,我没有说清楚,英语不是我的第一语言。

Tambo确实得到了我的意思,代码效果很好。

但是我忘记了... “h1”有时可以放在“a”列表之前,不应该算作元素。可能是其他“h2”,“h3”等......我只想算“一个”元素......

     <div id="whatever">
       <div class="iwantthischangedto3elements">
          <h1>Do no not count this</h1>
          <a href="#">element 1</a>
          <a href="#">element 2</a>
          <a href="#">element 3</a>
       </div>

知道怎么办吗? 干杯 文森特

1 个答案:

答案 0 :(得分:0)

您可以使用for loopElement.classList添加课程

var whateverChild = document.querySelectorAll("#whatever div");

for(var i = 0; i < whateverChild.length; i++) {
  //var anchor = document.querySelectorAll(whateverChild);
  if(whateverChild[i].childElementCount == 2){
    whateverChild[i].classList.add("two")
  }else if(whateverChild[i].childElementCount == 3){
    whateverChild[i].classList.add("three")
  }
}
.two a{color: green}
.three a{color: red}
<div id="whatever">
   <div class="iwantthischangedto3elements">
      <a href="#">element 1</a>
      <a href="#">element 2</a>
      <a href="#">element 3</a>
   </div>
   <div class="iwantthischangedto2elements">
      <a href="#">element 1</a>
      <a href="#">element 2</a>
   </div>
</div>

如果你有一个段落,你可以使用这个

var whateverChild = document.querySelectorAll("#whatever div");

for(var i = 0; i < whateverChild.length; i++) {
 var anchorLength = whateverChild[i].querySelectorAll("a").length;
 if(anchorLength == 2){
    whateverChild[i].classList.add("two")
  }else if(anchorLength == 3){
    whateverChild[i].classList.add("three")
  }
  
}
.two a{color: green}
.three a{color: red}
<div id="whatever">
   <div class="iwantthischangedto3elements">
      <a href="#">element 1</a>
      <p> i am a paragraph </p>
      <a href="#">element 2</a>
      <a href="#">element 3</a>
   </div>
   <div class="iwantthischangedto2elements">
      <a href="#">element 1</a>
      <a href="#">element 2</a>
   </div>
</div>

您可以将代码缩减为此

var numbersArray  = ["zero", "one", "two", "three", "four", "five"],
    whateverChild = document.querySelectorAll("#whatever div");

for(var i = 0; i < whateverChild.length; i++) {
 var anchorLength = whateverChild[i].querySelectorAll("a").length;
  
    whateverChild[i].classList.add(numbersArray[anchorLength])
  
}
.zero{color: orange}
.one{color: blue}
.two a{color: green}
.three a{color: red}
.four{color: purple}
.five{color: beige;}
<div id="whatever">
   <div class="iwantthischangedto3elements">
      <a href="#">element 1</a>
      <p> i am a paragraph </p>
      <a href="#">element 2</a>
      <a href="#">element 3</a>
   </div>
   <div class="iwantthischangedto2elements">
      <a href="#">element 1</a>
      <a href="#">element 2</a>
   </div>
</div>