【问题标题】:HTML & Javascript change content inside angle brackets ( < > )HTML 和 Javascript 更改尖括号 ( < > ) 内的内容
【发布时间】:2017-08-27 11:28:42
【问题描述】:


只是想知道是否可以使用纯 Javascript 更改 HTML 标记中尖括号之间的内容。
我的意思是所有内容,不仅是标签名称,不仅是 id,不仅是类和所有不同的属性,还有里面的所有内容,甚至是非标准的 HTML 代码。

一个小例子:
之前

<div id="myID" class="myCLASS" whaterver-content ></div>

Javascript DOM 函数后

<div id="myID" class="myCLASS" other-content ></div>

我知道标签名称、id 和类可以用 JS 中的 DOM 元素对象函数进行修改。是否有任何不错的函数可以对不在引号内且不在属性之前的数据执行相同的操作?

感谢您的回答。

编辑:我刚刚看到这个Set attribute without value 是通过另一种方式提问。但结果是一样的吗?还是属性后面会有=""?

【问题讨论】:

  • 你知道字符串whaterver-content吗?更换是一样的还是不一样?
  • 设置属性?顺便说一句,那将是一个很好的 jquery 用例...
  • 您是在询问字符串中的无效 HTML 还是从无效 HTML 创建的 DOM?
  • @KobyDouek 是的,我知道他的值,我想用另一个已知值替换它。
  • @Jonasw 如果我将值留空,属性旁边会出现 ="" 吗?

标签: javascript html dom tags


【解决方案1】:

我不喜欢接受的答案。您不应该将 HTML 作为字符串进行操作。它不安全,而且性能通常很差。

想象whaterver-content 是该 div 内某处的实际文本,例如作为用户输入。它会在不应该被替换时被替换。

请直接使用DOM操作:

var element = document.getElementById('myID');
element.removeAttribute("whaterver-content");
element.setAttribute("other-content", "");

【讨论】:

  • 我也找到了这个解决方案(查看编辑)......两者都在工作,但我同意你的观点,最好使用 DOM。顺便说一句,由于属性的值为空,属性后面会不会有=""?
  • 简短回答:它将按您的预期工作。长答案:缺少属性值和空字符串属性在 HTML5 中是一回事。
【解决方案2】:

在元素的outerHTML 属性上使用replace 怎么样?

function change() {
   document.getElementById('myID').outerHTML = 
       document.getElementById('myID').outerHTML.replace('whaterver-content','other-content');
   console.info(document.getElementById('myID').outerHTML);
}
<div id="myID" class="myCLASS" whaterver-content ></div>
<input type='button' onclick='change();' value='change' />

【讨论】:

  • @Ascor8522 那你到底想要什么?你能指定更好吗?
  • 就我而言,我想更改整个标签,而不仅仅是获取他的“值”或它的字符串
  • 我写的内容改变了整个标签,而没有改变它的价值......不是吗?你能举个更好的例子吗?
  • 哦,抱歉,没有看到结果不同 ^^ 我认为这只是一个外部 HTML 函数...顺便说一句,这正是我所期待的 ;) 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 2013-02-28
  • 2013-11-02
  • 2014-07-05
相关资源
最近更新 更多