日期:2014-05-16  浏览次数:20395 次

用javascript改变内容时为什么没有执行且不报错
<html>
<head>
<script   language= "javascript ">
function   window.onload()   {
document.getElementById( "div1 ").innerHTML= "更改 <scr "+ "ipt   src=\ "a.js\ "> </scr "+ "ipt> 之后 ";
alert(document.getElementById( "div1 ").innerHTML);
}
</script>
</head>
<body>
<div   id= "div1 "> 原始内容 </div>
</body>
</html>
---------------------------------------------------
打开后发现div1内容由“原始内容”变成了“更改之后”,并且从alert中可以看出内容确实被更改了,并且包含 <script   src= "a.js "> </script> 但是奇怪的就是a.js文件中的内容完全没有得到任何执行??并且居然没有报错
即使把 <script   src= "a.js "> </script> 改变成 <script> alert( " ") </script> 也没有被执行,所以排除javascript不允许访问a.js的可能
我也尝试过一些资料上用于ajax的document.body.appendChild的这种方法,仍然得不到执行

------解决方案--------------------
不明白 LZ 为什么不直接在 head 里引用 .js,非要这么写?!

a.js 里是什么?

alert(document.getElementById( "div1 ").innerHTML);

应改为

alert(document.getElementById( "div1 ").innerText);
------解决方案--------------------
这样子是不会执行的啊,
以原为输出
放在div里面怎么能执行呢,
要明白js的工作原理啊,
无非就是要用js加一个js文件吗

//引用js/css文件;
function include(path,type,title){
var s,i,t;
if(arguments.length < 1){
return ;
}
if(arguments.length == 1){
type = "js ";
}
switch(type.toLowerCase()){
case "css ":
t = document.getElementsByTagName( "link ");
for(i=0;i <t.length;i++){
if(t[i].href && t[i].href.indexOf(path)!=-1){
return;
}
}
s=document.createElement( "link ");
s.rel= "alternate stylesheet ";
s.type= "text/css ";
s.href=path;
s.title=title;
s.disabled=false;
break;
case "js ":
case "javascript ":
default:
t = document.getElementsByTagName( "script ");
for(i=0;i <t.length;i++){
if(t[i].src && t[i].src.indexOf(path)!=-1){
return;
}
}
s=document.createElement( "script ");
s.type= "text/javascript ";
s.src=path;
break;
}
var h=document.getElementsByTagName( "head ")[0];
h.appendChild(s);
}

------解决方案--------------------
使用方法

<script>
include(path,type,title);
</script>
就行了
------解决方案--------------------
<html>
<head>
<script language= "javascript ">
function window.onload() {
document.getElementById( "div1 ").innerHTML= "更改 <input type= 'button ' value= 'click me ' onclick=javascript:alert( 'hi ');> 之后 ";
alert(document.getElementById( "div1 ").innerHTML);
}
</script>
</head>
<body>
<div id= "div1 "> 原始内容 </div>
</body>
</html>

这个挺有意思的呵
我试了试,直接加入不用触发的任何代码都是不会被执行的,估计的原因是:所有的文档都已加载完毕后,修改其内容,浏览器只会按预定的格式显示出来,而不会重新加载执行
------解决方案--------------------
我来试试
------解决方案--------------------