2009-12-18 99 views
0

我有ul名单,我需要改变类<li>的一个标签的使用javascript:的Javascript改变类元素

<ul> 
    <li>...</li> 
    <li class="something"> <- need to change this class to "myclass" (javascript goes here)</li> 
    <li>..</li> 
</ul> 

谢谢。

回答

5

使用jQuery(自然):

$(function(){ 
    $("li.something").removeClass("something").addClass("myclass"); 
}); 
+0

你太快了,我几乎做:-)也 – 2009-12-18 21:09:54

+0

注意,这个代码改变了所有li元素的“东西“class – 2009-12-18 21:11:00

+0

另请注意,他的示例只包含”something“类的一个实例:) – inkedmn 2009-12-18 21:12:27

-1

使用jQuery:

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

这将删除您可能想要的元素上的任何类。最好使用$('...')。addClass()和$('...')。removeClass()。 – sakabako 2009-12-18 21:15:44

+0

对不起,但他*说*他说他希望实际的课程是''myclass''。可笑的是,降低了这个答案。 – 2009-12-18 21:44:41

0

使用常规的JavaScript:

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; 
    } 
} 

如果您<li>标签有一个id属性,这将是更容易,你可以做

document.getElementById("liID").className = "newclassname"; 
+4

这只会在元素上唯一的类才起作用,它不会与class =“something anotherthing”一起工作。 – sakabako 2009-12-18 21:14:44

+0

这将与OP发布的内容一起工作。这是一个小的细节,以改变它与其他类名一起工作。我故意不要过度复杂的示例代码。 – womp 2009-12-18 21:32:34

4

由于似乎有很多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> 
+0

任何人有任何想法,为什么这已被拒绝?我错过了什么地方有错吗? – Jamie 2009-12-21 09:37:58

+0

他们只是jQuery传福音的人投票反对他们的圣杯。 – DoctorLouie 2009-12-25 13:55:51

+0

如果我不知道从头开始编写真正的JavaScript,因为大多数jQuery福音传播者往往无能为力,我也会投票回答你的答案,呵呵! – DoctorLouie 2009-12-25 13:57:18