请教关于span的innerHTML问题 <body onload='document.getElementById("s").innerHTML="a"'><span id="s"></span> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢。还一后续问题:<span id="s">a</span>如果我给它赋一个初始innerHTML,然后再document.getElementById("s").innerHTML="b"的话就可以正常显示“b”。请教原因,谢谢 现在的问题,一段代码是:<span id="s"></span>另一段是“<span id="s">a</span>其余部分完全一样,而第一段报错,第二段正常。对于对象的引用要放在这个对象被加载之后-------------------------------------------------------------多了一个“a”,是否和加载有关系?谢谢 你说的那“其余部分完全一样,而第一段报错,第二段正常”应该不可能吧难道<Script language="JavaScript" type="text/javascript"><!--document.getElementById("s").innerHTML="a"//--></Script><body><span id="s"></span><span id="s">a</span>可以?上面两位已经说了。网页总是从第一行开始执行。那么如果你在加载网页完毕之前(或是说在加载完对应对象完毕之前)你使用该对象就会提示对象不存在。所以上面的代码你在定义Javascript那里定义延时或者在网页最后加上脚本都是对的。而onload他执行的代码是在页面加载完毕之执行的。<Script language="JavaScript" type="text/javascript" defer><!--document.getElementById("s").innerHTML="a"//--></Script><body><span id="s"></span> to PaulLeder(PaulLeder):咱们可以测试一下可不可能。我的测试结果如下:========================================================1.htm:<span id="a"></span><script>document.getElementById("a").innerHTML = "a";</script>结果:为空或不是对象=============================================================2.htm:<span id="a">b</span><script>document.getElementById("a").innerHTML = "a";</script>结果:a=============================================================除了第一行的span的innerHTML其余部分都一样,但结果就是不一样 我这里也有这种问题,真是奇怪哦,哪位老大给解释一下<span id="aaaa"></span><span id="bbbb"></span><span id="cccc"></span><script language="javascript">alert(document.getElementById("aaaa"));document.getElementById("aaaa").innerHTML = "a";</script><input type="button" value="test" onclick="alert(document.getElementById('aaaa'))"><input type="button" value="test" onclick="alert(document.getElementById('bbbb'))"><input type="button" value="test" onclick="alert(document.getElementById('cccc'))"> 我的测试环境:WindowXP sp2IE6、Avant Browser 这样就不会出错了:<html><head></head><body><span id="aaaa"></span><span id="bbbb"></span><span id="cccc"></span><script language="javascript">alert(document.getElementById("aaaa"));document.getElementById("aaaa").innerHTML = "a";</script><input type="button" value="test" onclick="alert(document.getElementById('aaaa'))"><input type="button" value="test" onclick="alert(document.getElementById('bbbb'))"><input type="button" value="test" onclick="alert(document.getElementById('cccc'))"></body></html> 试试这样写:document.all.s.innerHTML="abcd" <span id="s"></span><script>document.all.s.innerText = "b";</script>结果:"document.all.s"为空或不是对象-----------------------------------------------------<span id="s">a</span><script>document.all.s.innerText = "b";</script>结果:b 请问楼主有没有对比过我那代码和你的代码(我的代码少写了结束标签</body>,但是不影响浏览器工作,它默认会添加~,在这不说这个)。我虽然没有看见过document.all、document.getElementById("..")这些函数,但是我猜想的是这些方法获得都是<body></body>里面的标签(包括本身的引用)的引用。也就是说如果你只有单独的标签而没有nodeValue,也没有包含在<body>里面,那么浏览器认为这不是文档内容。而你的标签有值那么即使没<body>标签,系统也会认为是文档内容。你可以通过修改下面的代码查看。<div id="s" name="s">fgsfsd</div><!--注释掉上一句运行看看,是不是body在下面这个里面没出现?<div id="s" name="s"></div><div id="ss" name="ss"/>--><script type="text/javascript">for(var i=0;i<document.all.length;i++){ alert(document.all[i].tagName);}try{ document.all("s").innerText = "b";}catch(e){ alert(e.message);}//--></script> 这些对象的引用是文档(body)内容,而不是广泛意义上的文档内容。 to PaulLeder(PaulLeder) :谢谢你的回复。我承认我偷工减料,代码一点都不规范。但是如果是我偷懒造成的程序执行错误,那么应该两段代码都不能执行才对。现在的问题是两段基本相同,只是差了一个字符,结果却是相反的。我只是想搞清楚差的这一个“a”起到什么关键作用。再次谢谢大家,问题解决后马上加分 ========================================================1.htm:<span id="a"></span><script>document.getElementById("a").innerHTML = "a";</script>结果:为空或不是对象=============================================================2.htm:<span id="a">b</span><script>document.getElementById("a").innerHTML = "a";</script>结果:a=============================================================innerHTML改为innerText试没试?我之前都说过了。 刚测试过两段代码来<span id="a"></span><script>document.getElementById("a").innerHTML = "a";</script>运行后会自动变成下面:<HTML><HEAD><SCRIPT>document.getElementById("a").innerHTML = "a";</SCRIPT></HEAD><BODY><SPAN id=a></SPAN</BODY></HTML>--------------------------------------------------------------------------<span id="a">b</span><script>document.getElementById("a").innerHTML = "a";</script>运行后变成:<HTML><HEAD></HEAD><BODY><SPAN id=a>a</SPAN><SCRIPT>document.getElementById("a").innerHTML = "a";</SCRIPT></BODY></HTML>======================================================================分析上面代码, 第一种出错是必然的, 但为什么浏览器执行后会了位置,真的想不能 innerHTML改为innerText试没试?我之前都说过了。========================================================请注意看我上边的回复:<span id="s"></span><script>document.all.s.innerText = "b";</script>结果:"document.all.s"为空或不是对象-----------------------------------------------------<span id="s">a</span><script>document.all.s.innerText = "b";</script>结果:b <span id="s">加个空格呢</span> 刚又测试了<span><span id="a"></span></span><script>alert(3);</script><div style="border:#000000 1px solid"></div><script>document.getElementById("a").innerHTML = "a";</script>jjjjjjjjjjj---------------------这样一样会出错,分析了浏览器执行后的源码,自动生成<html><head>等元素,并把所有js 脚本放到<head>和</head>之间,================================================<span><span id="a"></span></span>jjjjj<script>document.getElementById("a").innerHTML = "a";</script>但这样就正确,分析了浏览器执行后的源码,自动生成<html><head>等元素,但没有把所有js 脚本放到<head>和</head>之间,而是在原来地放, 没变过位置***************************************************************通过前面几个测试, 说明浏览器编译时,如果遇到有js脚本, 如果这些脚本之前没有可以显示的元素, 就会把这些脚本自动移到<head>和</head>之间 通过前面几个测试, 说明浏览器编译时,如果遇到有js脚本, 如果这些脚本之前没有可以显示的元素, 就会把这些脚本自动移到<head>和</head>之间------------------------------------------------------------------------------------多谢,我详细的测试下 楼上没说错,我刚刚用Maxthon的ViewPage看过了,确实如你所言!兄弟能想到这里,在下佩服之至!! js控制media player问题 关于jquery ajax 的鬼异现象 几个extjs的入门问题,望高人解答 关于JS写值班轮流代码,在线等 请帮我改一下这段代码,请帮忙! 用javascript怎么实现一个到计时器 如何设置input type="file"的值 css的脚本操作,郁闷中。。。 这个事件如何调用 孟兄,请教:一个Load进来的html页,怎样在另一祯中打开一页?? window.moveTo的怪问题 一个我觉得很难的问题!
还一后续问题:<span id="s">a</span>如果我给它赋一个初始innerHTML,然后再document.getElementById("s").innerHTML="b"的话就可以正常显示“b”。请教原因,谢谢
<span id="s"></span>
另一段是“
<span id="s">a</span>
其余部分完全一样,而第一段报错,第二段正常。对于对象的引用要放在这个对象被加载之后
-------------------------------------------------------------
多了一个“a”,是否和加载有关系?谢谢
难道
<Script language="JavaScript" type="text/javascript">
<!--
document.getElementById("s").innerHTML="a"
//-->
</Script>
<body>
<span id="s"></span>
<span id="s">a</span>
可以?
上面两位已经说了。
网页总是从第一行开始执行。那么如果你在加载网页完毕之前(或是说在加载完对应对象完毕之前)你使用该对象就会提示对象不存在。
所以上面的代码你在定义Javascript那里定义延时或者在网页最后加上脚本都是对的。而onload他执行的代码是在页面加载完毕之执行的。
<Script language="JavaScript" type="text/javascript" defer>
<!--
document.getElementById("s").innerHTML="a"
//-->
</Script>
<body>
<span id="s"></span>
咱们可以测试一下可不可能。我的测试结果如下:========================================================
1.htm:<span id="a"></span>
<script>
document.getElementById("a").innerHTML = "a";
</script>结果:为空或不是对象
=============================================================
2.htm:<span id="a">b</span>
<script>
document.getElementById("a").innerHTML = "a";
</script>结果:a
=============================================================除了第一行的span的innerHTML其余部分都一样,但结果就是不一样
<span id="aaaa"></span>
<span id="bbbb"></span>
<span id="cccc"></span>
<script language="javascript">alert(document.getElementById("aaaa"));
document.getElementById("aaaa").innerHTML = "a";
</script>
<input type="button" value="test" onclick="alert(document.getElementById('aaaa'))">
<input type="button" value="test" onclick="alert(document.getElementById('bbbb'))">
<input type="button" value="test" onclick="alert(document.getElementById('cccc'))">
IE6、Avant Browser
<html>
<head>
</head>
<body>
<span id="aaaa"></span>
<span id="bbbb"></span>
<span id="cccc"></span>
<script language="javascript">alert(document.getElementById("aaaa"));
document.getElementById("aaaa").innerHTML = "a";
</script>
<input type="button" value="test" onclick="alert(document.getElementById('aaaa'))">
<input type="button" value="test" onclick="alert(document.getElementById('bbbb'))">
<input type="button" value="test" onclick="alert(document.getElementById('cccc'))">
</body>
</html>
<script>
document.all.s.innerText = "b";
</script>结果:"document.all.s"为空或不是对象-----------------------------------------------------<span id="s">a</span>
<script>
document.all.s.innerText = "b";
</script>结果:b
我虽然没有看见过document.all、document.getElementById("..")这些函数,但是我猜想的是这些方法获得都是<body></body>里面的标签(包括本身的引用)的引用。
也就是说如果你只有单独的标签而没有nodeValue,也没有包含在<body>里面,那么浏览器认为这不是文档内容。而你的标签有值那么即使没<body>标签,系统也会认为是文档内容。
你可以通过修改下面的代码查看。<div id="s" name="s">fgsfsd</div>
<!--
注释掉上一句运行看看,是不是body在下面这个里面没出现?
<div id="s" name="s"></div>
<div id="ss" name="ss"/>
-->
<script type="text/javascript">
for(var i=0;i<document.all.length;i++){
alert(document.all[i].tagName);
}
try{
document.all("s").innerText = "b";
}catch(e){
alert(e.message);
}
//-->
</script>
但是如果是我偷懒造成的程序执行错误,那么应该两段代码都不能执行才对。现在的问题是两段基本相同,只是差了一个字符,结果却是相反的。我只是想搞清楚差的这一个“a”起到什么关键作用。再次谢谢大家,问题解决后马上加分
1.htm:<span id="a"></span>
<script>
document.getElementById("a").innerHTML = "a";
</script>结果:为空或不是对象
=============================================================2.htm:<span id="a">b</span>
<script>
document.getElementById("a").innerHTML = "a";
</script>结果:a
=============================================================innerHTML改为innerText试没试?我之前都说过了。
<span id="a"></span>
<script>
document.getElementById("a").innerHTML = "a";
</script>
运行后会自动变成下面:
<HTML><HEAD>
<SCRIPT>
document.getElementById("a").innerHTML = "a";
</SCRIPT>
</HEAD>
<BODY><SPAN id=a></SPAN</BODY></HTML>--------------------------------------------------------------------------
<span id="a">b</span>
<script>
document.getElementById("a").innerHTML = "a";
</script>
运行后变成:
<HTML><HEAD></HEAD>
<BODY><SPAN id=a>a</SPAN>
<SCRIPT>
document.getElementById("a").innerHTML = "a";
</SCRIPT></BODY></HTML>
======================================================================
分析上面代码, 第一种出错是必然的, 但为什么浏览器执行后会了位置,真的想不能
请注意看我上边的回复:
<span id="s"></span>
<script>
document.all.s.innerText = "b";
</script>结果:"document.all.s"为空或不是对象-----------------------------------------------------<span id="s">a</span>
<script>
document.all.s.innerText = "b";
</script>结果:b
<span><span id="a"></span></span>
<script>
alert(3);
</script>
<div style="border:#000000 1px solid"></div>
<script>
document.getElementById("a").innerHTML = "a";
</script>
jjjjjjjjjjj
---------------------
这样一样会出错,分析了浏览器执行后的源码,自动生成<html><head>等元素,并把所有js 脚本放到<head>和</head>之间,
================================================
<span><span id="a"></span></span>
jjjjj
<script>
document.getElementById("a").innerHTML = "a";
</script>
但这样就正确,分析了浏览器执行后的源码,自动生成<html><head>等元素,但没有把所有js 脚本放到<head>和</head>之间,而是在原来地放, 没变过位置
***************************************************************
通过前面几个测试, 说明浏览器编译时,如果遇到有js脚本, 如果这些脚本之前没有可以显示的元素, 就会把这些脚本自动移到<head>和</head>之间
兄弟能想到这里,在下佩服之至!!