2011-11-29 61 views
0

我想执行的,如果条件为根据类如何通过javascript获取字段的类?

var follow = document.getElementById('follow'); 

if(the class of the variable follow is active){ 

do this... 


} 
else{ 

do this... 


} 

我怎样才能做到这一点在JavaScript?

回答

4

什么

if(follow.className == "active") 
0

使用follow.className,因为class明显保留。

2

您可以使用元素的className属性。

if(follow.className == 'active') { 
    // do something 
} 
else { 
    // do something else 
} 

但是请注意,一个元素如<div class="active right">不会与该代码工作,因为类名会返回“主动权”。换句话说,它将与具有只有'主动'类的元素一起工作,但不是所有具有'主动'类的元素。

你可以,而是使用正则表达式匹配像这样,以检测有活动类元素(和潜在的其他人):记住

if(follow.className.match(/.*active.*/)) { 
    // do something 
} 
else { 
    // do something else 
} 
+0

叫什么你应该使用'。测试()'而不是'.match()'如果你只关心AY es-it-match/no-it-没有结果。另外,你的正则表达式不会匹配'

'? “”匹配任何字符... – nnnnnn

2

轴承,不止一个类可以用于指定相同的元素:

<p class="active bright wavy"> 

你可以这样做:

if (/(^|)active(|$)/.test(follow.className)) { 
    // do something 
} 

的道具使用JavaScript检查课程是.className,因为class是保留字。 (留作将来使用:它不会在此刻做任何事情。)

或者,如果你打算做了很多,你可以定义一个函数:

function elementHasClass(el, cl) { 
    return (new RegExp("(^|)" + cl + "(|$)")).test(el.className); 
} 

if (elementHasClass(follow, "active")) { ... } 
0

使用这个命令你这种类型的检查更加频繁:

Element.prototype.hasClass = function(classToCheck){ 

      if(this.className == classToCheck) 
       return true; 
      else if(this.className.indexOf(classToCheck + ' ') ==0) 
       return true 
      else if(this.className.indexOf(' ' + classToCheck) == (classToCheck.length - 1)) 
       return true 
      else if (this.className.indexOf(' ' + classToCheck + ' ') >= 0) 
       return true; 

      return false 
     } 

if(document.getElementById('myId').hasClass('classIWantToCheck')){ 
//do the stuff 
}else{ 
// do other stuff :(
} 
+0

如果测试意味着该函数将错误地返回true,如果该元素有多个类,并且其中一个名称包含所需的类名称,则返回true。例如,'class =“非活动测试”'和'someElement.hasClass(“active”)' – nnnnnn

+0

是的nnnnnn这是真的,你的正则表达式更好。我将编辑我的indexOf工作。 – alinn