论坛首页 Web前端技术论坛

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

浏览 12235 次
精华帖 (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问题 ?

已确定是我常识问题
   发表时间:2011-03-26  
因为有个 false 是字符串  一个是 boolean
1 请登录后投票
   发表时间:2011-03-26   最后修改:2011-03-26
seyaa 写道
因为有个 false 是字符串  一个是 boolean

嗯, 懂了, 谢谢
那我想请问一下要怎么把 boolean 的 false 设给一个属性呢, 还是说这是做不到的?
1 请登录后投票
   发表时间:2011-03-26  
属性不能放boolean吧,你可以用jQuery的data放任何类型的数据,当然包括boolean
0 请登录后投票
   发表时间:2011-03-27  
amwjx 写道
属性不能放boolean吧,你可以用jQuery的data放任何类型的数据,当然包括boolean

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

0 请登录后投票
   发表时间:2011-03-28  
数据类型不一致。。建议用字符串比较。
0 请登录后投票
   发表时间:2011-03-28  
aoliwen521 写道
数据类型不一致。。建议用字符串比较。

主要是想设个标记位用于取反,发现原来 attr 方法是没办法取得在HTML标签里写的自定义属性的,这点没原生JS方便
0 请登录后投票
   发表时间:2011-03-28  
DOM标准明确规定所有设置的属性会转成字符串
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2011-03-28  
lowzoom 写道
aoliwen521 写道
数据类型不一致。。建议用字符串比较。

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

胡扯,你理解错了,attr就是取的html标签里的属性,而你的this.test=false里的test和html标签里的属性不能混为一谈,这是对象属性去了,不是html属性。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics