<body onload='document.getElementById("s").innerHTML="a"'>
<span id="s"></span>

解决方案 »

  1.   

    谢谢。
    还一后续问题:<span id="s">a</span>如果我给它赋一个初始innerHTML,然后再document.getElementById("s").innerHTML="b"的话就可以正常显示“b”。请教原因,谢谢
      

  2.   

    现在的问题,一段代码是:
    <span id="s"></span>
    另一段是“
    <span id="s">a</span>
    其余部分完全一样,而第一段报错,第二段正常。对于对象的引用要放在这个对象被加载之后
    -------------------------------------------------------------
    多了一个“a”,是否和加载有关系?谢谢
      

  3.   

    你说的那“其余部分完全一样,而第一段报错,第二段正常”应该不可能吧
    难道
    <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>
      

  4.   

    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其余部分都一样,但结果就是不一样
      

  5.   

    我这里也有这种问题,真是奇怪哦,哪位老大给解释一下
    <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'))">
      

  6.   

    我的测试环境:WindowXP sp2
    IE6、Avant Browser
      

  7.   

    这样就不会出错了:
    <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>
      

  8.   

    试试这样写:document.all.s.innerHTML="abcd"
      

  9.   

    <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
      

  10.   

    请问楼主有没有对比过我那代码和你的代码(我的代码少写了结束标签</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>
      

  11.   

    这些对象的引用是文档(body)内容,而不是广泛意义上的文档内容。
      

  12.   

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

  13.   

    ========================================================
    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试没试?我之前都说过了。
      

  14.   

    刚测试过两段代码来
    <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>
    ======================================================================
    分析上面代码, 第一种出错是必然的, 但为什么浏览器执行后会了位置,真的想不能
      

  15.   

    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
      

  16.   

    <span id="s">加个空格呢</span>
      

  17.   

    刚又测试了
    <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>之间
      

  18.   

    通过前面几个测试, 说明浏览器编译时,如果遇到有js脚本, 如果这些脚本之前没有可以显示的元素, 就会把这些脚本自动移到<head>和</head>之间------------------------------------------------------------------------------------多谢,我详细的测试下
      

  19.   

    楼上没说错,我刚刚用Maxthon的ViewPage看过了,确实如你所言!
    兄弟能想到这里,在下佩服之至!!