问题在代码的注释里:
<!DOCTYPE html>
<html>
<head>
<title>Dynamic Script Example 2</title>
</head>
<body>
<p>You should see an alert saying "hi" after clicking the button.</p>
<input type="button" value="Add Script" onclick="addScript()">
<script type="text/javascript">
function loadScriptString(){
var script = document.createElement("script");
var code="function sayHi(){alert('hi');}";
script.type = "text/javascript";
try {
script.appendChild(document.createTextNode(code));
} catch (ex){
script.text = "code";//就是这一行里的"code",
//这里为什么不是字面上的code,
//而是function sayHi(){alert('hi');}?
//感觉反直觉。
//试了下script.text = code;也是可以的。
}
document.body.appendChild(script);
}
function addScript(){
loadScriptString();
sayHi();
}
</script>
</body>
</html>
加了双引号就是字符串,没加就是变量
根本没执行到 catch 里吧,不知道楼主用的是什么浏览器?
呃
加上引号就是字符串了啊
a = "code" 和 code 变量没关系
js 的双引号不像 php 那样,js 的双引号就是单引号。
没有执行到catch 你的代码并不会执行
的确没有执行到catch