[英]JavaScript - wrap contents within a DIV, if a condition is met
我有一个相当复杂的问题。
通常的标记(这里没有问题):
<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">
后(未.title伪) div.wrapper
?
我知道如何使用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);
}
将其放在脚本的底部,或者可以等待整个窗口都加载window.onload = function() { }
或研究onDOMReady事件。
尽管这回答了您的问题,但实际上您的HTML无效(无关紧要的</div>
)可能会使该解决方案无效。
好吧,JQuery是纯Javascript,但是有了JQuery,浏览器可以解析更多的Javascript,这也许就是为什么您遇到一些延迟的原因。 我不确切知道如何使用Javascript修复此问题,因为您输出的HTML无效。 不同的浏览器会对此做出不同的解释。 正确的做法是通过使用服务器端代码(例如PHP或ASP)输出正确的HTML。
也许您可以在发送之前通过搜索将其修复在服务器上,如果缺少,则添加它。 如果您无法在服务器上修复它,则可以使用内联javascript来解决,但是您需要将内容添加为javascript变量,进行解析,然后将其写出。
这是一个示例(仅供参考,我知道RegEx是错误的,但认为可以理解这一点)。
<div class="wrapper">
<div class="title"> bla bla... </div>
<script type="text\javascript">
var content = "<div class="content"> ...content..."
if (!content.match(/<div class="content">/))
content = "<div class="content">" + content;
document.Write(content)
</script>
</div>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.