我在Javascript中有一个变量(字符串),例如你有这个文本:
"document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"
我使用Ajax和PHP获得了这个变量,但这不是我(可能非常简单)问题的地方。
假设我想将此代码用作代码本身,而不是字符串,因此我不希望这是一个字符串,而是希望它内部的代码能够被执行。
我怎么可能这样做?
提前致谢
答案 0 :(得分:3)
不要这样做。 It's a security nightmare
如果您真的必须这样做,请使用eval()
,如下所示:
eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';");
考虑到您的示例和解释,我怀疑您正在检索其内容完全由javascript组成的网址。您遇到的问题是您用来检索该URL的方法会为您提供包含该javascript的字符串。我相信您打算使用<script>
元素来加载该代码。要动态地这样做:
var script = document.createElement("script");
script.src = "url/to/your/javascript";
document.getElementByTagName('body')[0].appendChild(script);
答案 1 :(得分:1)
您可以使用eval()方法。但是,如果你不必这样做,就不要这样做。如果您做必须,请确保您知道自己在做什么。
eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';")
答案 2 :(得分:0)
以下是使用eval()
的替代方法:
var stringContainingJavascript = "document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"
var body = document.getElementsByTagName('body')[0];
var paragraph = document.createElement('p');
paragraph.id = 'tekst';
body.appendChild(paragraph);
var script = document.createElement('script');
var scriptText = document.createTextNode(stringContainingJavascript);
script.appendChild(scriptText);
body.appendChild(script);
在将<p>
附加到文档的id="tekst"
之前,上面的脚本会创建一个<p>
元素,并为其提供<body>
。
然后,相同的脚本会创建一个<script>
元素并将字符串附加到该元素,然后将<script>
附加到文档的<body>
。