首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

为什么小弟我得不到值

2012-10-17 
为什么我得不到值JScript codevar wanhua {beishu : Number($(#beishu).val()),yuan : Number($(#yua

为什么我得不到值

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() );

},
[解决办法]
探讨

有值了,
但是我要的是他得到的值,而不是"no" "off"
引用:

swanhua : $("input[name='wanhua']:checked").val()?"on":"off",

[解决办法]
wanhua.init();的调用在input后?
[解决办法]
探讨
有值了,
但是我要的是他得到的值,而不是"no" "off"
引用:
swanhua : $("input[name='wanhua']:checked").val()?"on":"off",

[解决办法]
真正原因应该是三楼说的时序问题,
因为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时执行的

热点排行