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。
在执行这段代码的时候.DOM还没有生成,所以会出错.
像Jquery就提供了解决方案:
$(document).ready(function(){
//TODO 把你的代码放这个里面就行了.
});
谢谢 按照你的办法就可以了。但是原因我还是不太理解
@朝曦: 你的代码是当页面HTML加载完js就会执行的。在DOM生成之前就已经执行了(HTML代码加载完不意味着DOM生成了)。
DOM还没有生成,就去获取DOM里面的元素,当然也就获取不到了。
alert(answer["answer1"]); 有數值嗎?如果沒有。不能設置null
有的
@朝曦: 原因是你在賦值的時候,document.getElementById('answer1').value中的answer1還沒有生成呢。js執行的早了。如果把這個js放到最後面執行也沒有問題。或則是 像下面用jquery
有answer1、answer2这样ID的对象吗?或者这样的对象不止一个?当有多个的时候,getElementById返回的是一个数组,js本身不支持对数组赋值时自动对每个成员单独赋值。
写在window.onload事件里面。。。
.text 和.value???