2011-04-05 71 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