【发布时间】:2017-03-15 13:21:24
【问题描述】:
如何获取与 liList 变量关联的 JavaScript 循环,以影响 DOM,而不会覆盖任何其他样式?
我希望我的菜单项仍然是橙色的,并且第一个列表项保留在 JavaScript 中创建的 styleAbbr 变量。
//JavaScript style to effect HTML abbr
var styleAbbr = document.createElement('style');
styleAbbr.type = 'text/css';
styleAbbr.innerHTML = '.myAbbr {font-style: italic; letter-spacing: .4em;}';
document.getElementsByTagName('head')[0].appendChild(styleAbbr);
document.querySelector('abbr').className = 'myAbbr';
//the JavaScript for the loop
var msg = '';
var i = 0;
var liList = document.querySelectorAll('li.menuItem');
if (i < liList.length) {
for (var i = 0; i < liList.length; i++) {
//liList[i].textContent gets the text form the li element in the DOM
var listWording = liList[i].textContent;
//liList.innerHTML applies my style and pushes listWording into the DOM
msg += '<li style="background: red; margin-top: 10px;">'
+ listWording
+ '</li>';
}
}
//I believe that the issue is that .innerHTML = msg.
document.getElementById('mMain').innerHTML = msg;
ul {
font-size: 1.4em;
list-style: none;
}
ul li a {
text-decoration: none;
color: #e69b1e;
}
<ul id="mMain">
<li class="menuItem">
<a href="#">
<abbr title="HyperText Markup Language">HTML</abbr>
</a>
</li>
<li class="menuItem">
<a href="#">About</a>
</li>
<li class="menuItem">
<a href="#">Gallery</a>
</li>
<li class="menuItem">
<a href="#">Contact</a>
</li>
</ul>
理想情况下,我希望将我的 JavaScript 样式放在它自己的变量中,并将其循环到“menuItem”类中,同时不影响任何其他预定义类,但是我不太确定如何将该变量调用到循环中。
var menuItemClass = document.createElement('style');
menuItemClass.type = 'text/css';
menuItemClass.innerHTML = '.menuStyle {background: red; margin-top: 10px;}';
document.getElementsByTagName('head')[0].appendChild(menuItemClass);
我也知道我可以在我的 CSS 中有一个类来完成所有这些,然后引用它。
不过,我对如何在 JavaScript 中实现这一点很感兴趣。
谢谢。
【问题讨论】:
-
你想动态创建类并应用于现有菜单中的每个 li 元素
-
试图了解如何在 JavaScript 循环中创建样式,找到了一个解决方案,这是我的最终目标。
-
看看我的回答
标签: javascript loops dom methods nodelist