为什么我得不到值
JScript code
var wanhua = {
beishu : Number($("#beishu").val()),
yuan : Number($("#yuan").html()),
swanhua : $("input[name='wanhua']:checked").val(),
init:function(){
alert(this.swanhua );
},
alert(this.swanhua );
我这样 出不来值undeerfind
但是 我这样 alert($("input[name='wanhua']:checked").val());
就可以出来值
这个是怎么一回事啊
------解决方案-------------------- swanhua : $("input[name='wanhua']:checked").val()?"on":"off",
------解决方案--------------------
可能是时序问题
也就是你 wanhua. swanhua的值在生成的时候 还没有内容 说不定页面上 这个input还不存在
所以你要这样
var wanhua = {
beishu : Number($("#beishu").val()),
yuan : Number($("#yuan").html()),
swanhua : function(){return $("input[name='wanhua']:checked").val()}
,
init:function(){
alert(this.swanhua() );
},
------解决方案--------------------
------解决方案--------------------wanhua.init();的调用在input后?
------解决方案--------------------
------解决方案--------------------真正原因应该是三楼说的时序问题,
因为init函数中直接alert($("input[name='wanhua']:checked").val());可以出来,说明获取值的方式是没有错的
而这种写法和alert(this.swanhua );看着一样,但分析下执行过程就知道是有区别的
alert(this.swanhua );弹出成员swanhua,而成员swanhua赋值的时间是对象wanhua构造的时候
也就是说这个写法$("input[name='wanhua']:checked").val()句执行的时间是wanhua构造的时候
alert($("input[name='wanhua']:checked").val());弹出时再获取值,那么这种写法$("input[name='wanhua']:checked").val()句执行的时间就是调用wanhua.init的时候
两中写法,唯一的区别就是获取值的时间了,所以,可以判断,wanhua构造时html没有赋值,而wanhua.init调用时已经赋值,三楼的改法可行,能保证也是调用wanhua.init时执行的