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