$(".normalText").css("border", "0px solid green");
你會如何用普通的JavaScript等價物替換這個jQuery語句?如何從jQuery改爲JavaScript
$(".normalText").css("border", "0px solid green");
你會如何用普通的JavaScript等價物替換這個jQuery語句?如何從jQuery改爲JavaScript
嘗試
document.getElementsByClassName('normalText').style.border = '0px solid green';
有沒有像這樣內置到JavaScript據我所知(編輯:實際上,有getElementsByClassName方法,其對某些瀏覽器上運行)。
我想你最好的機會是編寫一個函數,它循環遍歷每個DOM元素並將類字段與其參數進行比較。
要獲得含有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';
}
getElementsByClassName
不some older browsers支持。如果支持是一個問題,您可以使用類似this或this的回退。
在另一方面,如果你只支持現代瀏覽器,你還不如用querySelectorAll
和Array#forEach
:
[].forEach.call(document.querySelectorAll('.normalText'), function(el) {
el.style.border = '3px solid hotpink';
});
+1,很好的答案,不能相信沒有upvotes呢。 – Christopher 2011-04-05 11:32:29
對於現代的瀏覽器可以使用.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");
'document.querySelector'將只返回匹配的第一個元素。 – 2011-04-05 11:29:02
@Mathias,所以真的..有'querySelectorAll'在心中...感謝趕上它 – 2011-04-05 12:05:05
稱它爲我沒有得到你,你可以請詳細些 – 2011-04-05 11:19:04
'document.getElementsByClassName (className);'只適用於現代瀏覽器,否則沒有javascript替代方法來通過className獲取元素。 – BGerrissen 2011-04-05 11:22:30
@Mithun P:這聽起來像他想要香草JavaScript函數來取代jQuery的(我知道,對吧?!) – stealthyninja 2011-04-05 11:23:14