2014-06-20 54 views
0

我不知道爲什麼而classList以下警報顯示爲空字符串:空班級名冊返回true

<p id="p">Hello, world!</p> 
<button id="b">Button</button> 
<script> 
    document.getElementById('b').onclick = function() { 
     if (document.getElementById('p').classList) { 
      alert('Full!'); 
     } 
    }; 
</script> 

DEMO

回答

0

因爲classListDOMTokenList類型的對象有一些重載方法,如toString()(這就是爲什麼alert(document.getElementById('p').classList)顯示一個空字符串)等

所以,當你執行if (document.getElementById('p').classList) {你確實有不便像如果(對象){在這種情況下如果將通過。

要確保 - 請參閱typeof(document.getElementById('p').classList) - 它將是collection。也嘗試在控制檯document.getElementById('p').classList.__proto__中寫入 - 您會看到DOMTokenList - 具有指向DOMTokenList構造函數(document.getElementById('p').classList.__proto__.constructor)的鏈接的原型對象。

瞭解更多關於DOMTokenList - https://developer.mozilla.org/en/docs/Web/API/DOMTokenList

1

classList存在,但沒有長度。改爲使用document.getElementById('p').classList.length

+0

如果'classList'存在作爲一個常規的JavaScript對象,那麼爲什麼[這](http://jsfiddle.net/Mori/d3mjv/1/)警報是空的?與[this]比較(http://jsfiddle.net/Mori/d3mjv/2/)。 – Mori