到底"XXX" in 元素 检测的是??

bigcctv 2011-01-06 09:25:40
<div id="cc" class="c1" ></div>

<script>
var s = document.getElementById("cc");
if ("id" in s)//为TRUE,有弹出窗口
alert('ok1');

if ("class" in s)//为FALSE,没有弹出窗口
alert('ok2');

这样看来它不是用来检测属性的,那到底"XXX" in 元素 检测的是??
请指教!~谢谢~~~
...全文
152 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Crazywa 2011-01-07
  • 打赏
  • 举报
回复
回#7楼,你可以试着运行下我贴的代码。
只要属性存在,in就可以检测出来,无论什么值。
既然讨论到这里的,就再多说些废话:
对于dom已有属性,例如style、id之类的,只是将标签上写的值赋给dom相应的属性(style,id,其中标签的class对应DOM的className)。
对于dom没有的属性,如<div id="test" mypp='sfsdf'>这样的在标签中添加的新属性,ff不予理睬(即document.getElementById('test').mypp是undefined并且,'mypp' in document.getElementById('test')是false),除非你是用getAttribute来获取(document.getElementById('test').getAttribute('mypp')可以获取到),而IE则会为dom添加该属性,可以直接引用document.getElementById('test').mypp。
汉尼拔 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 littlecc2009 的回复:]
引用 5 楼 crazywa 的回复:
当你document.getElementById()获取的就是一个DOM元素了。
这个元素拥有DOM元素的所有属性。
即便你没有在标签里定义,它也存在。
你还可以试试"style"应该也存在。
in只是代表它是否有这个属性,而不管他的值是多少。
删除属性用delete关键字;

昨天做了下实验,发现只有IE下是你这种情况,而FF下,即使该元……
[/Quote]

FF下也是一样的,只不过有些属性,在ie中叫a,而在ff中叫做b了吧
littlecc2009 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 crazywa 的回复:]
当你document.getElementById()获取的就是一个DOM元素了。
这个元素拥有DOM元素的所有属性。
即便你没有在标签里定义,它也存在。
你还可以试试"style"应该也存在。
in只是代表它是否有这个属性,而不管他的值是多少。
删除属性用delete关键字;
[/Quote]
昨天做了下实验,发现只有IE下是你这种情况,而FF下,即使该元素可以有这个属性,但是没有为该属性赋值的话,FF下还是会返回FALSE.
Crazywa 2011-01-07
  • 打赏
  • 举报
回复

<div id="test">testDiv</div>
<script>
var c = document.getElementById('test');
alert('offsetLeft' in c?'有offset':'没有offset');
// 因为用document.getElementById获取了元素,它就有DOM元素的所有属性,无论你是否在标签中添加。
</script>

<script>
// 因为DOM元素的属性不允许delete(删除)所以构造新对象演示in
var d = {
id:'',
txt:'me'
};
alert('id' in d?'有id属性':'没有id属性');
delete d.id;
alert('id' in d?'有id属性':'没有id属性');
</script>
Crazywa 2011-01-07
  • 打赏
  • 举报
回复
当你document.getElementById()获取的就是一个DOM元素了。
这个元素拥有DOM元素的所有属性。
即便你没有在标签里定义,它也存在。
你还可以试试"style"应该也存在。
in只是代表它是否有这个属性,而不管他的值是多少。
删除属性用delete关键字;
cgisir 2011-01-07
  • 打赏
  • 举报
回复
id, class, src, title, href等HTML对应的自有属性,可以直接获取,和设置值
比如 img.src, img.id, img.alt, div.className


自定义的属性需要用 getAttribute获取
汉尼拔 2011-01-07
  • 打赏
  • 举报
回复
刚刚网上找了下资料,除了getAttribute()方法以外,Element接口还有两个常用的方法setAttribute()和removeAttribute()方法.(removeAttribute()方法只能删除自定义属性)
汉尼拔 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 crazywa 的回复:]
回#7楼,你可以试着运行下我贴的代码。
只要属性存在,in就可以检测出来,无论什么值。
既然讨论到这里的,就再多说些废话:
对于dom已有属性,例如style、id之类的,只是将标签上写的值赋给dom相应的属性(style,id,其中标签的class对应DOM的className)。
对于dom没有的属性,如<div id="test" mypp='sfsdf'>这样的在标签中添加的新属性……
[/Quote]

这些哪里是废话啊,这些才是精华,getAttribute() 又学到了,谢谢 浮云哥
汉尼拔 2011-01-06
  • 打赏
  • 举报
回复
你直接
alert(s.className);
看看不就知道了啊

你没有写的话,显示的就是默认值""
bigcctv 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shuixiya1999 的回复:]

就是属性.

class在 DOM中是 className
[/Quote]
我又发现了个新问题..把class属性删掉:
<div id="cc" ></div>
if ("className" in s)//为FALSE,没有弹出窗口
alert('ok2');
结果还是有弹出OK2....
请解释~~谢谢~~~
汉尼拔 2011-01-06
  • 打赏
  • 举报
回复
看下DOM接口 就知道了
汉尼拔 2011-01-06
  • 打赏
  • 举报
回复
就是属性.

class在 DOM中是 className

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧