如何将字符串的某些部分标记为JavaScript中的代码

时间:2014-08-06 06:53:41

标签: javascript jquery html

我正在使用ASP.NET Web窗体应用程序。我的很多信息都存储在服务器端的XML文件中。通过Ajax调用,我检索了一些用于前端的数据。

问题是有时候我必须在XML文件中写一些字符串,其中一部分应该被识别为JS代码。我的意思是例如:

<Render>
  <![CDATA[<center><input type='checkbox' value=" + row[2] + " /></center>]]>
</Render>

在这里,我从JavaScript中的一个地方获取这段数据,其中我有数组row并且我有索引[2]但是显示了带有此索引的元素的值,调试器向我显示复选框值按字面意思row[2](不识别为数组)。

我在JavaScript中处理此问题的方式是:

 options.mRender = function (data, type, row) { return options.Render; };

其中options.Render是实际字符串<center><input type='checkbox' value=" + row[2] + " />

我制作了一个简单的JSFiddle示例。我的想法是当我写person[0]来获取Ivan而不是person[0]时,这就是现在的结果。

我知道如果我这样添加eval() - $('#appnd').append(eval(txt));但我无法弄清楚如何在我的代码中使用它,因为我传递了整个标记而不仅仅是变量。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

function parse(text) {
    return text.replace(/[a-z]+\[\d+\]/g,function(exp){return eval(exp);});
}

JSFiddle

它只是接受输入并用array[index]替换它的部分看起来像eval

这个解决方案对我来说似乎是一个好主意,我同意应该有一些标准的方法(更好),但我想不出另一种做法它

编辑:如果您可以在将XML代码发送到客户端(例如<center><input type='checkbox' value=" + BEGINJS>row[2]<ENDJS + " />之前)以某种方式标记XML中的JS代码,则可能会更可靠,那么您的正则表达式就不必疯狂地猜测JS代码看起来会像。