请教关于span的innerHTML问题

wasuka 2006-10-27 01:54:08
HTML:

<span id="s"></span>

请教怎么改变这个span的innerHTML?
我尝试document.getElementById("s").innerHTML="a",报错“为空或不是对象”。

谢谢
...全文
2540 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
Apq001 2006-11-01
  • 打赏
  • 举报
回复
楼上没说错,我刚刚用Maxthon的ViewPage看过了,确实如你所言!
兄弟能想到这里,在下佩服之至!!
wasuka 2006-11-01
  • 打赏
  • 举报
回复
通过前面几个测试, 说明浏览器编译时,如果遇到有js脚本, 如果这些脚本之前没有可以显示的元素, 就会把这些脚本自动移到<head>和</head>之间

------------------------------------------------------------------------------------

多谢,我详细的测试下
wasuka 2006-10-31
  • 打赏
  • 举报
回复
to PaulLeder(PaulLeder) :

谢谢你的回复。我承认我偷工减料,代码一点都不规范。
但是如果是我偷懒造成的程序执行错误,那么应该两段代码都不能执行才对。现在的问题是两段基本相同,只是差了一个字符,结果却是相反的。我只是想搞清楚差的这一个“a”起到什么关键作用。

再次谢谢大家,问题解决后马上加分
hansonboy 2006-10-31
  • 打赏
  • 举报
回复
刚又测试了
<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>之间
hansonboy 2006-10-31
  • 打赏
  • 举报
回复
可能浏览器编译页面时都把没有内容的元素放到最后处理,所以造成代码换位了
wasuka 2006-10-31
  • 打赏
  • 举报
回复
为空或不是对象
jeffkei 2006-10-31
  • 打赏
  • 举报
回复
<span id="s">加个空格呢</span>
wasuka 2006-10-31
  • 打赏
  • 举报
回复
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
hansonboy 2006-10-31
  • 打赏
  • 举报
回复
刚测试过两段代码来
<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>
======================================================================
分析上面代码, 第一种出错是必然的, 但为什么浏览器执行后会了位置,真的想不能
jeffkei 2006-10-31
  • 打赏
  • 举报
回复
========================================================
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

试没试?

我之前都说过了。
PaulLeder 2006-10-30
  • 打赏
  • 举报
回复
这些对象的引用是文档(body)内容,而不是广泛意义上的文档内容。
PaulLeder 2006-10-30
  • 打赏
  • 举报
回复
请问楼主有没有对比过我那代码和你的代码(我的代码少写了结束标签</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>
wasuka 2006-10-30
  • 打赏
  • 举报
回复
<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
jeffkei 2006-10-30
  • 打赏
  • 举报
回复
document.all.s.innerText















macula55 2006-10-29
  • 打赏
  • 举报
回复
试试这样写:document.all.s.innerHTML="abcd"
Apq001 2006-10-29
  • 打赏
  • 举报
回复
同意楼上,页面元素多的时候我这里没出错,用兄弟们的代码试验,结果一样。
以前我也遇到过一次,只是没有深究。
Eilien 2006-10-28
  • 打赏
  • 举报
回复
加载时间的问题.
阿米果 2006-10-28
  • 打赏
  • 举报
回复
可能是个bug
dh20156 2006-10-28
  • 打赏
  • 举报
回复
这样就不会出错了:
<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>
dh20156 2006-10-28
  • 打赏
  • 举报
回复
关注一下!
加载更多回复(10)

87,919

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧