读书人

用javascript改变内容时为什么没有执行

发布时间: 2012-03-06 20:47:55 作者: rapoo

用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>

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


可我这里怎么能够加载列

[解决办法]
对于ie,动态加的script要加defer属性

<html>
<head>
<script language= "javascript ">
function window.onload() {
document.getElementById( "div1 ").innerHTML= "更改 <scr "+ "ipt defer > alert(); </scr "+ "ipt> 之后 ";
alert(document.getElementById( "div1 ").innerHTML);
}
</script>
</head>
<body>
<div id= "div1 "> 原始内容 </div>
</body>
</html>
[解决办法]
搞了半天,学习~
[解决办法]
var jsCode = "更改 <scr "+ "ipt src=\ "a.js\ "> </scr "+ "ipt> 之后 ";
var jsIframe = document.createElement( "iframe ");
jsIframe.style.display = "none ";//把jsIframe隐藏起来
document.body.appendChild(jsIframe);
with(window.frames[window.frames.length - 1]){
document.open();
document.write(jsCode); //执行JS代码
document.close();

这有篇文章,你看看
http://cache.baidu.com/c?word=%2E%3Binnerhtml%2Cscript%2Csrc&url=http%3A//www%2Ewebdn%2Ecom/web%5Ffile/html/H0607240/&p=8b2a950d8f934ead07b38a6f59&user=baidu

读书人网 >JavaScript

热点推荐