Reputation: 10571
I need to capitalize the first letter of various html elements such as p, h2, h3, h4.
This stack question has helped me, however, it only targets the p tag. How can I say to target more than one tag?
Such as:
function change(charm) {
var string = eval(charm).toLowerCase(), change = "", newstring = string.split("."), tochange;
for (var i = 0; i < newstring.length; i++) {
tochange = newstring[i].trim().charAt(0);
newstring[i] = newstring[i].replace(tochange, tochange.toUpperCase());
}
change = newstring.join(" . ");
return change;
}
var text = change("document.getElementsByTagName('p, h2, h3, h4')[0].innerHTML");
document.getElementsByTagName("p, h2, h3, h4")[0].innerHTML = text;
That doesn't work, am I doing something wrong with targetting various elements?
Upvotes: 2
Views: 1303
Reputation: 41675
getElementsByTagName()
won't accept a comma-separated list... it expectes either one tag name or an asterisk.
Try querySelectorAll()
instead.
Upvotes: 1
Reputation: 29221
A CSS only approach:
p:first-letter,
h1:first-letter,
h2:first-letter,
h3:first-letter,
h4:first-letter {
text-transform: uppercase;
}
:first-letter is ie9+
Upvotes: 6