2011-04-05 72 views
0
$(".normalText").css("border", "0px solid green"); 

你会如何用普通的JavaScript等价物替换这个jQuery语句?如何从jQuery改为JavaScript

+0

称它为我没有得到你,你可以请详细些 – 2011-04-05 11:19:04

+0

'document.getElementsByClassName (className);'只适用于现代浏览器,否则没有javascript替代方法来通过className获取元素。 – BGerrissen 2011-04-05 11:22:30

+1

@Mithun P:这听起来像他想要香草JavaScript函数来取代jQuery的(我知道,对吧?!) – stealthyninja 2011-04-05 11:23:14

回答

0

尝试

document.getElementsByClassName('normalText').style.border = '0px solid green'; 
0

有没有像这样内置到JavaScript据我所知(编辑:实际上,有getElementsByClassName方法,其对某些浏览器上运行)。

我想你最好的机会是编写一个函数,它循环遍历每个DOM元素并将类字段与其参数进行比较。

3

要获得含有class="normalText"所有元素的NodeList,你可以使用:

var els = document.getElementsByClassName('normalText'); 

然后遍历它们:

var els = document.getElementsByClassName('normalText'), 
    len = els.length; 
while (len--) { 
    els[len].style.border = '3px solid hotpink'; 
} 

getElementsByClassNamesome older browsers支持。如果支持是一个问题,您可以使用类似thisthis的回退。

在另一方面,如果你只支持现代浏览器,你还不如用querySelectorAllArray#forEach

[].forEach.call(document.querySelectorAll('.normalText'), function(el) { 
    el.style.border = '3px solid hotpink'; 
}); 
+1

+1,很好的答案,不能相信没有upvotes呢。 – Christopher 2011-04-05 11:32:29

2

对于现代的浏览器可以使用.getElementsByClassName() method MDC docs

document.getElementsByClassName('normalText'); 

为更现代的你可以用.querySelectorAll() method MDC docs

document.querySelectorAll('.normalText'); 

旧版本浏览器,你可以做

function getElementsByClassName(oElm, strTagName, strClassName){ 
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); 
    var arrReturnElements = new Array(); 
    strClassName = strClassName.replace(/\-/g, "\\-"); 
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); 
    var oElement; 
    for(var i=0; i<arrElements.length; i++){ 
     oElement = arrElements[i]; 
     if(oRegExp.test(oElement.className)){ 
      arrReturnElements.push(oElement); 
     } 
    } 
    return (arrReturnElements) 
} 

(从http://robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/采取),并与

getElementsByClassName(document, "*", "normalText"); 
+0

'document.querySelector'将只返回匹配的第一个元素。 – 2011-04-05 11:29:02

+0

@Mathias,所以真的..有'querySelectorAll'在心中...感谢赶上它 – 2011-04-05 12:05:05