try{ 
    document.getElementById('test').value='abc'; 
}catch(err){ 
    document.getElementById('test').innerHTML='abc'; 

这句话是不会出现错误的 也就是说不会执行catch语句
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
    </head>
    <body>
<span id='test'> </span>
<script>
try{ 
    document.getElementById('test').value='abc'; 
}catch(err){ 
    document.getElementById('test').innerHTML='abc'; 
} </script>
<input type='button' value='测试' onclick='alert(document.getElementById("test").value);'>
    </body>
</html>

解决方案 »

  1.   

    value的值其实已经赋上了的 只是你看不到而已 
      

  2.   

    在html中你还可以给一个对象赋一个根本就不存在的属性<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Untitled Document</title>
        </head>
        <body>
    <span id='test' hehe='This is the test'> </span>
    <input type='button' value='测试' onclick='alert(document.getElementById("test").hehe)'>
        </body>
    </html>
      

  3.   

    如果某个属性不存在,赋值后将自动创建这个属性
    比如上面的
    document.getElementById('test').value='abc'; 
    改成
    document.getElementById('test').abcdefg='abc'; 
    也行
      

  4.   

    又学到了一些新知识。
    不过我现在是这样处理的:
    try{ 
        document.getElementById('test').innerHTML='abc'; 
    }catch(err){ 
        document.getElementById('test').value='abc'; 
    }
    即把顺序换一下,可以省下finally块了。
    我假设所有的页面中都是用span来接收值,这样如果真的是span,代码执行就没有问题;
    如果刚好是input,这里执行try块就会出错,自然就执行到了catch块了。(很奇怪,按楼上的朋友说的,input是不具有innerHTML属性的,那就应该自动创建innerHTML属性的呀,这里却没有自动创建)
      

  5.   

    input也有innerHTML,只是为只读属性try<script type="text/javascript">
    alert(document.getElementById('test').innerHTML);
    alert(typeof document.getElementById('test').innerHTML);
    </script>