$(".normalText").css("border", "0px solid green");
How would you replace this jQuery statement with a plain JavaScript equivalent?
To get a NodeList containing all elements with class="normalText", you could use:
var els = document.getElementsByClassName('normalText');
And then loop through them:
var els = document.getElementsByClassName('normalText'),
len = els.length;
while (len--) {
els[len].style.border = '3px solid hotpink';
}
getElementsByClassName isn’t supported in some older browsers. If support is an issue, you could use a fallback like this or this.
On the other hand, if you’re only supporting modern browsers, you might as well use querySelectorAll and Array#forEach:
[].forEach.call(document.querySelectorAll('.normalText'), function(el) {
el.style.border = '3px solid hotpink';
});
For modern browsers you can use the .getElementsByClassName() method MDC docs
document.getElementsByClassName('normalText');
for more modern you can use the .querySelectorAll() method MDC docs
document.querySelectorAll('.normalText');
for older browsers you can do (taken from http://robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/)
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)
}
and call it with
getElementsByClassName(document, "*", "normalText");
document.querySelector will only return the first matched element.querySelectorAll in mind ... thanks for catching it
document.getElementsByClassName( className );for modern browsers only, otherwise there's no javascript replacement to get elements by className.