首页 新闻 会员 周边 捐助

javascript document.getElementById('').value='' 不成功

0
悬赏园豆:20 [已解决问题] 解决于 2012-05-25 09:50
var answer=new Object();
 var url=location.search;
  
  if(url.indexOf('?')!=-1){
    str=url.substr(1);
    strs=str.split('&');
    for(i=0;i<strs.length;i++){
      answer[strs[i].split('=')[0]]=unescape(strs[i].split('=')[1]);
    }
    
  }
  alert(answer["answer1"]);
  document.getElementById('answer1').value=answer["answer1"];
  function show(){
    document.getElementById('answer1').value=answer["answer1"];
    document.getElementById('answer2').value=answer["answer2"];
  }

静态页面传值,使用的是location answer1 是一个textarea 想跳转页面之后直接对answer1赋值可是提示错误。 但是增加一个 show方法,绑定一个button的click事件,就可以了。提示的错误信息是Uncaught TypeError: Cannot set property 'value' of null。

 

朝曦的主页 朝曦 | 小虾三级 | 园豆:1073
提问于:2012-05-19 10:51
< >
分享
最佳答案
1

在执行这段代码的时候.DOM还没有生成,所以会出错.

像Jquery就提供了解决方案:

$(document).ready(function(){
  //TODO 把你的代码放这个里面就行了.
});

收获园豆:20
三阶 | 小虾三级 |园豆:1636 | 2012-05-19 15:13

谢谢 按照你的办法就可以了。但是原因我还是不太理解 

朝曦 | 园豆:1073 (小虾三级) | 2012-05-21 13:22

@朝曦: 你的代码是当页面HTML加载完js就会执行的。在DOM生成之前就已经执行了(HTML代码加载完不意味着DOM生成了)。

DOM还没有生成,就去获取DOM里面的元素,当然也就获取不到了。

三阶 | 园豆:1636 (小虾三级) | 2012-05-22 09:42
其他回答(4)
0
  alert(answer["answer1"]); 有數值嗎?如果沒有。不能設置null
無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-19 10:57

有的

支持(0) 反对(0) 朝曦 | 园豆:1073 (小虾三级) | 2012-05-21 12:44

@朝曦: 原因是你在賦值的時候,document.getElementById('answer1').value中的answer1還沒有生成呢。js執行的早了。如果把這個js放到最後面執行也沒有問題。或則是 像下面用jquery

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-21 14:20
0

有answer1、answer2这样ID的对象吗?或者这样的对象不止一个?当有多个的时候,getElementById返回的是一个数组,js本身不支持对数组赋值时自动对每个成员单独赋值。

无之无 | 园豆:5095 (大侠五级) | 2012-05-19 11:16
1

写在window.onload事件里面。。。

不懂cc | 园豆:877 (小虾三级) | 2012-05-20 20:22
0

.text 和.value???

nickel | 园豆:338 (菜鸟二级) | 2012-05-22 21:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册