锁定老帖子 主题:我错了,出道题警示新手吧
精华帖 (0) :: 良好帖 (0) :: 新手帖 (15) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-26
最后修改:2011-03-29
<html> <head> <script type="text/javascript" src="jquery-1.5.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ var test = $(this).attr("test"); alert(test); $(this).attr("test", !test); }); }); </script> </head> <body> <button>按钮</button> </body> </html> 看看能不能说出点击按钮4次分别会输出什么 PS: 今天才发现我的问题其实可以直接用each方法解决,没文化真可怕啊。。。 PS2: w3schools的jquery教程坑爹的,那么多有用的方法都不介绍。。。 ---------------菜鸟悔悟的更新分割线,上面是更新,下面是原帖---------------------------- $(document).ready(function(){ $("body").attr("test",false); alert($("body").attr("test")); // false alert($("body").attr("test")==false); // also false.. alert(!$("body").attr("test")); // still false.. }); 上面这段代码, 我使用的是jquery 1.5.1, 在firefox和ie下, 三个alert均是输出false... false==false的结果是false?! false取反还是false?! 请问大家 这是 js的问题 还是 jquery的问题 还是 我的代码问题 还是 我的逻辑问题 还是 我的常识问题 还是 我的RP问题 ? 已确定是我常识问题 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-26
因为有个 false 是字符串 一个是 boolean
|
|
返回顶楼 | |
发表时间:2011-03-26
最后修改:2011-03-26
seyaa 写道 因为有个 false 是字符串 一个是 boolean
嗯, 懂了, 谢谢 那我想请问一下要怎么把 boolean 的 false 设给一个属性呢, 还是说这是做不到的? |
|
返回顶楼 | |
发表时间:2011-03-26
属性不能放boolean吧,你可以用jQuery的data放任何类型的数据,当然包括boolean
|
|
返回顶楼 | |
发表时间:2011-03-27
amwjx 写道 属性不能放boolean吧,你可以用jQuery的data放任何类型的数据,当然包括boolean
谢谢了, 之前还一直不知道这个方法...汗 我突然还想到了可以直接用一个初始化的事件来增加自定义的属性(直接挂到js对象上, 主要是想取出来的时候方便点, 不用再调用jQuery的方法) $(document).ready(function(){ $("body").bind("init",function(){this.test=false;}) .trigger("init"); }); |
|
返回顶楼 | |
发表时间:2011-03-28
数据类型不一致。。建议用字符串比较。
|
|
返回顶楼 | |
发表时间:2011-03-28
aoliwen521 写道 数据类型不一致。。建议用字符串比较。
主要是想设个标记位用于取反,发现原来 attr 方法是没办法取得在HTML标签里写的自定义属性的,这点没原生JS方便 |
|
返回顶楼 | |
发表时间:2011-03-28
DOM标准明确规定所有设置的属性会转成字符串
|
|
返回顶楼 | |
发表时间:2011-03-28
最后修改:2011-03-28
lowzoom 写道 $(document).ready(function(){ $("body").attr("test",new Boolean(false)); alert($("body").attr("test")); // false alert($("body").attr("test")==false);[color=red]改成=="false"[/color] alert(!$("body").attr("test")); // still false.. }); "false" 转换成boolean型时是true。 so, alert(!"false")是false !!”false“是true |
|
返回顶楼 | |
发表时间:2011-03-28
lowzoom 写道 aoliwen521 写道 数据类型不一致。。建议用字符串比较。
主要是想设个标记位用于取反,发现原来 attr 方法是没办法取得在HTML标签里写的自定义属性的,这点没原生JS方便 胡扯,你理解错了,attr就是取的html标签里的属性,而你的this.test=false里的test和html标签里的属性不能混为一谈,这是对象属性去了,不是html属性。 |
|
返回顶楼 | |