我知道如何用 jQuery 做到这一点,但我想用 vanilla javascript 来学习它,我觉得它会更快。这是 jsFiddle 的链接,其中包含我正在尝试做的精简版本。http://jsfiddle.net/yramagicman/MyM2B/以下是有问题的脚本。
<script>
var id = 'ul';
var tag = 'li';
var wrapTag = 'span';
var wrapper = document.createElement(wrapTag);
var z = document.getElementById(id);
var y = z.getElementsByTagName(tag);
var count = y.length;
for (var i = 0; i < count; i++) {
y[i].setAttribute("class", "red"); //so I can see the result
wrapper.appendChild(y[i].cloneNode(true));
y[i].parentNode.replaceChild(wrapper, y[i]);
wrapper.setAttribute('class', 'hi'); //so I can see the result
}</script>
<!-- and the html-->
<ul id="ul" class="ul">
<li class="li">1</li>
<li class="li">2</li>
<li class="li">3</li>
<li class="li">4</li>
<li class="li">5</li>
<li class="li">6</li>
<li class="li">7</li>
<li class="li">8</li>
</ul>
我可以将整个 Ul 包装在一个 div 或 span 或其他任何东西中,但是当我尝试包装每个列表项时,我收到错误“HIERARCHY_REQUEST_ERR:DOM 异常 3:节点被插入到它不属于的地方。” 有任何想法吗?