职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 459|回复: 11

我错了,出道题警示新手吧

  [复制链接]
feiguo 发表于 2011-8-15 08:18 | 显示全部楼层 |阅读模式
Html代码  
<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>  

<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教程坑爹的,那么多有用的方法都不介绍。。。


---------------菜鸟悔悟的更新分割线,上面是更新,下面是原帖----------------------------

Js代码  
$(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..   
});  

$(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问题 ?
已确定是我常识问题


紫衿 发表于 2011-8-15 08:18 | 显示全部楼层
因为有个 false 是字符串  一个是 boolean

broken 发表于 2011-8-15 08:19 | 显示全部楼层
seyaa 写道
因为有个 false 是字符串  一个是 boolean

嗯, 懂了, 谢谢
那我想请问一下要怎么把 boolean 的 false 设给一个属性呢, 还是说这是做不到的?

醉倚西风 发表于 2011-8-15 08:19 | 显示全部楼层
属性不能放boolean吧,你可以用jQuery的data放任何类型的数据,当然包括boolean

话说我当年 发表于 2011-8-15 08:19 | 显示全部楼层

谢谢了, 之前还一直不知道这个方法...汗
我突然还想到了可以直接用一个初始化的事件来增加自定义的属性(直接挂到js对象上, 主要是想取出来的时候方便点, 不用再调用jQuery的方法)  
Js代码  
$(document).ready(function(){                 
    $("body").bind("init",function(){this.test=false;})   
     .trigger("init");   
});   

$(document).ready(function(){              
    $("body").bind("init",function(){this.test=false;})
     .trigger("init");
});



Jethro 发表于 2011-8-15 08:19 | 显示全部楼层
数据类型不一致。。建议用字符串比较。

fl 发表于 2011-8-15 08:19 | 显示全部楼层

主要是想设个标记位用于取反,发现原来 attr 方法是没办法取得在HTML标签里写的自定义属性的,这点没原生JS方便

走失的猫咪 发表于 2011-8-15 08:20 | 显示全部楼层
DOM标准明确规定所有设置的属性会转成字符串

找不到我 发表于 2011-8-15 08:20 | 显示全部楼层



"false" 转换成boolean型时是true。
so, alert(!"false")是false
!!”false“是true


楠楠 发表于 2011-8-15 08:20 | 显示全部楼层

胡扯,你理解错了,attr就是取的html标签里的属性,而你的this.test=false里的test和html标签里的属性不能混为一谈,这是对象属性去了,不是html属性。
Jethro 发表于 2011-8-16 10:12 | 显示全部楼层
帮你顶,人还是厚道点好
fossil 发表于 2011-8-17 12:28 | 显示全部楼层
我赞成。嘿嘿
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-11 17:36 , Processed in 0.168112 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表