Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery/plainoldJavaScript更改元素(例如h1->h2)?_Javascript_Jquery - Fatal编程技术网

如何使用jQuery/plainoldJavaScript更改元素(例如h1->h2)?

如何使用jQuery/plainoldJavaScript更改元素(例如h1->h2)?,javascript,jquery,Javascript,Jquery,当然,与文档有效性相关的可能错误有很多,但是当将段落p更改为address元素时,我会遇到直接的障碍。我目前的方法大致如下: var p = $('p#test'); p.replaceWith('<address>' + p.html() + '</address>'); 但对于这个具体案例来说,这是失败的;它适用于p->blockquote或h2->h3。Firebug表示出于某种原因,文档中添加了一个自动关闭元素 有人能发现错误或建议其他方法吗?您可以在标题周围使

当然,与文档有效性相关的可能错误有很多,但是当将段落p更改为address元素时,我会遇到直接的障碍。我目前的方法大致如下:

var p = $('p#test');
p.replaceWith('<address>' + p.html() + '</address>');
但对于这个具体案例来说,这是失败的;它适用于p->blockquote或h2->h3。Firebug表示出于某种原因,文档中添加了一个自动关闭元素


有人能发现错误或建议其他方法吗?

您可以在标题周围使用占位符:

<span id="demo"><h1>Title</h1></span> 然后使用JavaScript DOM为innerHTML属性创建新值

<script type="javascript"> setTitle = function(id, tag, title) { var container = document.getElementById(id); container.innerHTML = '<' + tag + '>' + title + '</' + tag + '>'; } setTitle('demo', 'h1', 'My Title'); </script>
您可以在标题周围使用占位符:

<span id="demo"><h1>Title</h1></span> 然后使用JavaScript DOM为innerHTML属性创建新值

<script type="javascript"> setTitle = function(id, tag, title) { var container = document.getElementById(id); container.innerHTML = '<' + tag + '>' + title + '</' + tag + '>'; } setTitle('demo', 'h1', 'My Title'); </script> 您的解决方案会遇到各种可怕的HTML转义问题,可能还会受到注入攻击


您的解决方案可能会遇到各种可怕的HTML转义问题和可能的注入攻击。

这对我来说很好,只需一个最小的页面。你的页面验证了吗?它在加载时验证,是的。就我正确阅读HTML规范而言,它也会在更改后进行验证,即在任何上下文中,地址都可以替换p。以防万一,您可能想知道是什么问题:p.HTML获取第一个匹配元素的HTML内容。你必须使用这种方法使用p.each。。。;这对我来说很好,只需一页。你的页面验证了吗?它在加载时验证,是的。就我正确阅读HTML规范而言,它也会在更改后进行验证,即在任何上下文中,地址都可以替换p。以防万一,您可能想知道是什么问题:p.HTML获取第一个匹配元素的HTML内容。你必须使用这种方法使用p.each。。。;Daniel,谢谢你的回答,但是这不是假设address元素已经存在吗?假设body只包含stuff

,我希望它是stuffNo,语法$创建了一个新的address元素,然后可以用来替换p。但是请注意,我刚刚对我原来的帖子做了一个更正。哇,这对我来说是一个新的jQuery:谢谢,Daniel,工作起来像做梦一样。Daniel,谢谢你的回答,但这不是假设address元素已经存在吗?假设body只包含stuff

,我希望它是stuffNo,语法$创建了一个新的address元素,然后可以用来替换p。但是请注意,我刚刚对我原来的帖子做了一个更正。哇,这对我来说是一个新的jQuery:谢谢,丹尼尔-工作起来像个梦。为什么这个被否决了?在没有解释为什么的情况下对这样的内容进行否决是没有帮助的…它是完整地写入还是简单地用新字符串覆盖目标?它被否决是因为:1它没有回答问题。问题是如何用另一个标记替换现有标记,但保留原始标记的内容。此代码将替换标记及其内容。2无正当理由,它需要额外的占位符标记。3它不会转义标记或标题,因此这些变量可能包含HTML标记,这些标记将被解析并注入页面。这可能是注入攻击的载体。基本上,这个答案是一个不好的分形。为什么这被否决了?在没有解释为什么的情况下对这样的内容进行否决是没有帮助的…它是完整地写入还是简单地用新字符串覆盖目标?它被否决是因为:1它没有回答问题。问题是如何用另一个标记替换现有标记,但保留原始标记的内容。此代码将替换标记及其内容。2无正当理由,它需要额外的占位符标记。3它不会转义标记或标题,因此这些变量可能包含HTML标记,这些标记将被解析并注入页面。这可能是注入攻击的载体。基本上,这个答案是坏的分形。