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来解释正确的方法,那么为什么在这种情况下正则表达式是可以的。