I am working on a hover effect for a menu that works well when using IDs, but I cannot figure out how to do the same with classes with multiple values.
The function is to get the width of the text and apply underline when you hover with the same length. It would be nice if I could do this without jQuery.
Here is a demo: JSFiddle
Work with identifiers:
function textWidth() {
var TextDiv = document.getElementById("link-menu");
var txtWidth = (TextDiv.clientWidth + 1);
document.getElementById("underline").style.width = txtWidth + 'px';
}
function textWidthInitial() {
document.getElementById("underline").style.width = '0px';
}
Attempts with classes # 1:
function textWidth() {
var linkDiv = document.getElementsByClassName("link-menu");
var underlineDiv = document.getElementsByClassName("underline");
var i;
for (i = 0; i < linkDiv.length; i++) {
var txtWidth = (linkDiv[i].clientWidth + 1);
underlineDiv[i].style.width = txtWidth + 'px';
}
}
Attempts with classes # 2:
function textWidth() {
var clsLinkMenu = document.querySelectorAll('.underline, .link-menu');
var i;
for (i = 0; i < clsLinkMenu.length; i++) {
var txtWidth = (clsLinkMenu[i].clientWidth + 1);
document.getElementsByClassName("link-menu")[i].style.width = txtWidth + 'px';
document.getElementsByClassName("underline")[i].style.width = txtWidth + 'px';
}
}
source
share