Javascript 替换<;预处理>;没有<;代码>;至<;预处理>&书信电报;代码>;一次

Javascript 替换<;预处理>;没有<;代码>;至<;预处理>&书信电报;代码>;一次,javascript,Javascript,如何更换刚 <pre>&lt;p&gt;Hello&lt;/p&gt;</pre> <-- Target <pre><code>&lt;p&gt;Hello World&lt;/p&gt;</code></pre> 我只需要零钱 我想是正则表达式吧 ' }) } 替换('” 替换(“”) //返回“” 您的问题显然不清楚,但如果我理解正确,您基本上希望将

如何更换刚 <pre>&lt;p&gt;Hello&lt;/p&gt;</pre> <-- Target <pre><code>&lt;p&gt;Hello World&lt;/p&gt;</code></pre> 我只需要零钱

我想是正则表达式吧

' }) } 替换('” 替换(“”) //返回“”
您的问题显然不清楚,但如果我理解正确,您基本上希望将标记添加到任何尚未包含的标记中

这可以通过获取所有标记,然后查看其子项以查看是否存在标记来完成:

函数fillInMissingTags(outerTag,innerTag){
var elements=document.getElementsByTagName(outerTag);
对于(var elementIndex=0,elementsLength=elements.length;elementIndex
这将只处理直接子项中的检查。如果要执行深度检查,则需要修改它以递归地检查子项

编辑 我使它更通用,因此您可以使用该方法包装缺少适当子元素的任何元素的内部。

感谢“”

我已经用这个jquery解决了我的问题:


检查我在网站下面的问题:web development.cf/p/testting page.html这很不清楚。你是在问如何使用Javascript修改DOM元素的内容吗?我想OP希望每个元素都有一个子元素。我想我修复了混乱的逻辑
$(:pre:not(:has(code)))。每个(function(){$(This)。wrapInner(
)});
感谢“Alon Eitan”-->我已经用这个jquery解决了我的问题:$($pre:not(:has(code))))。每个(function(){$(this.wrapInner(
));在下面的网站上查看我的问题:web-development.cf/p/testting-page.html1:不是我而是阿隆,2:不要用别人的代码回答,而是让他回答并接受他的答案 <pre><code>&lt;p&gt;Hello&lt;/p&gt;</code></pre> <-- Only change this <pre> <pre><code>&lt;p&gt;Hello World&lt;/p&gt;</code></pre>
function replace(html) {
  return html
    // Look-ahead for <code>
    .replace(/(<pre>)(?!<code>)/gi, '<pre><code>')
    // Look-behind for </code>
    .replace(/(<\/pre>)/gi, function(m, g, i, s) {
      return s.slice(i-7, i) === '</code>'
        ? m
        : '</code></pre>'
      })

}

replace('<pre>&lt;p&gt;Hello&lt;/p&gt;</pre>')
// returns "<pre><code>&lt;p&gt;Hello&lt;/p&gt;</code></pre>"

replace('<pre><code>&lt;p&gt;Hello World&lt;/p&gt;</code></pre>') 
// returns "<pre><code>&lt;p&gt;Hello World&lt;/p&gt;</code></pre>"
function fillInMissingTags(outerTag, innerTag) {
    var elements = document.getElementsByTagName(outerTag);
    for(var elementIndex = 0, elementsLength = elements.length; elementIndex < elementsLength; elementIndex++) {
        var element = elements[elementIndex],
            found = false
            html;

        for(var childIndex = 0, childrenLength = element.children.length; childIndex < childrenLength; childIndex++) {
            var child = element.children[childIndex];
            if(child.tagName.toLowerCase() === innerTag) {
                found = true;
                html = element.innerHTML;
                break;
            }
        }

        if(found !== true) {
            var codeElement = document.createElement(innerTag);
            codeElement.innerHTML = html;
            element.innerHTML = codeElement;
        }
    }
}

fillInMissingTags('pre', 'code');
$("pre:not(:has(code))").each(function() { $(this).wrapInner( "<code></code>") });