我有一个相当复杂的问题。

通常的标记(这里没有问题):

   <div class="wrapper">
    <div class="title"> bla bla... </div>
    <div class="content"> ...content... </div>
   </div>


“扭曲”标记:

   <div class="wrapper">
       ...content... </div>
   </div>


如您所见,div.content的开始标签缺失。不幸的是,我无法控制.wrapper中的输出:(

所以,我的问题是:如何检测是否存在div.title,如果不存在-在<div class="content">之后插入div.wrapper(不是.title)?

我知道如何使用jQuery,但是我需要一个纯JavaScript的解决方案,因为使用jQuery在固定版式之前会有一个小的“延迟”。有任何想法吗?

最佳答案

没有jQuery,还有很多代码。

var divs = document.getElementsByTagName('div'),
    foundTitleDiv = false;

for (var i = 0, divsLength = divs.length; i < divsLength; i++) {
    if (divs[i].className.match(/\btitle\b/)) {
        foundTitleDiv = true;
        break;
    }
}

if (foundTitleDiv) {
    var wrapper = document.createElement('div');
    wrapper.className = 'content';
    var div = divs[i];
    wrapper.appendChild(div.cloneNode(true));
    div.parentNode.replaceChild(wrapper, div);
}


It works!

将其放在脚本的底部,或者您可以等待整个窗口加载window.onload = function() { }或研究DOMReady事件。

尽管这回答了您的问题,但实际上您的HTML无效(无关的</div>)可能使该解决方案无效。

10-05 20:29
查看更多