Javascript更改元素的类

Javascript更改元素的类,javascript,class,Javascript,Class,我有ul列表,我需要用javascript更改标记之一的类: <ul> <li>...</li> <li class="something"> <- need to change this class to "myclass" (javascript goes here)</li> <li>..</li> </ul> var listitems = document.getElem

我有
ul
列表,我需要用javascript更改
  • 标记之一的类:

    <ul>
      <li>...</li>
      <li class="something"> <- need to change this class to "myclass" (javascript goes here)</li>
      <li>..</li>
    </ul>
    
    var listitems = document.getElementsByTagName("li");
    for (int i = 0; i < listitems.length; i++)
    {
       if (listitems[i].className == "something")
       {
          listitems[i].className = "new class name";
          break;
       }
    } 
    
    • 使用jQuery(自然):

      使用JQuery:

      $('ul li:nth-child(2)').attr('class', 'myclass');
      

      使用常规javascript:

      <ul>
        <li>...</li>
        <li class="something"> <- need to change this class to "myclass" (javascript goes here)</li>
        <li>..</li>
      </ul>
      
      var listitems = document.getElementsByTagName("li");
      for (int i = 0; i < listitems.length; i++)
      {
         if (listitems[i].className == "something")
         {
            listitems[i].className = "new class name";
            break;
         }
      } 
      

      由于jquery似乎有很多答案,而且并不总是可以使用jquery(例如,如果您的客户/公司不允许您使用它!),这里有一个简单的javascript示例

      // Where 'e' is the element in question, I'd advise using document.getElementById
      // Unless this isn't possible.
      
      // to remove
      if ( e.className.match(/something/) ) {
          e.className = e.className.replace("something", "")
      }
      
      // to add back in
      if ( !e.className.match(/something/) ) {
          e.className += " something"
      }
      
      这将适用于多个类,例如:

      <li class="something another">...</li>
      

    • 还请注意,此代码使用“something”类更改了所有li元素。还请注意,他的示例仅包含“something”类的一个实例:)这只适用于元素上的唯一类something,而不适用于class=“something anotherthing”。这将适用于OP作为示例发布的内容。将其更改为与其他类名一起使用只是一个小细节。我有意不使示例代码过于复杂。这将删除元素上可能需要的任何类。最好使用$('…').addClass()和$('…').removeClass()。抱歉,但他确实说过他希望实际的类是
      “myclass”
      。否决这个答案太荒谬了。有人知道为什么否决这个答案吗?我遗漏了一个错误吗?他们只是jQuery的传道者,投票反对他们圣杯的人。如果我不知道如何从头开始编写真正的JavaScript,因为大多数jQuery传道者往往无法做到,我也会投票反对你的答案,呵呵!