Javascript 替换dom元素中的占位符
给定这样的圆顶元素:Javascript 替换dom元素中的占位符,javascript,Javascript,给定这样的圆顶元素: <div> <ul> {{placeholder|value1}} </ul> <a href="{{placeholder|value2}}">{{placeholder|value3}}</a> </div> {{占位符|值1}} 以及包含以下值的json字符串: var placeholder = {"values": {"value1" : "&
<div>
<ul>
{{placeholder|value1}}
</ul>
<a href="{{placeholder|value2}}">{{placeholder|value3}}</a>
</div>
{{占位符|值1}}
以及包含以下值的json字符串:
var placeholder = {"values": {"value1" : "<li>hello</li>", "value2" : "#", "value3": "hello again"}}
var占位符={“values”:{“value1”:“你好 ”,“value2”:“#“,“value3”:“你好”}
以通用方式替换dom元素中的值的正确方法是什么?即,上面的示例仅用于说明,占位符|值可以出现在元素中的任何位置
js fiddle:通常,我会插入一些代码以递归方式迭代所有DOM节点:
- 如果它是一个元素,则遍历其属性并替换占位符,然后递归
- 如果是文本节点,请替换其内容中的占位符
output = input.replace(/\{\{placeholder\|(.*?)\}\}/g,function(_,k) {
return placeholder[k] || _;
});
在这种特殊情况下,可以使用正则表达式解析HTML,因为。。。好的,正则表达式本身与HTML无关,并且不会以任何方式影响底层HTML
演示:这是一个非常广泛的问题。您尝试了哪些方法,您遇到了什么困难?我的第一种方法是将其作为字符串,替换值并转换回dom元素。不要认为这是一个好方法,这些占位符可以出现在任何地方,在任何属性、元素内容等中?@adeneo是的,它们可以是属性值、内容等。任何东西都可以使用字符串和正则表达式?+1来解释正确的方法,那么为什么在这种情况下正则表达式是可以的。