2013-10-24 79 views
1

我從我的HTML使用JavaScript用下面的代碼檢索圖片:爲什麼我不能在對象HTMLImageElement上使用.hasClass(value)方法?

var images = document.getElementsByTagName("img"); 

如果我理解正確的JavaScript這將返回類型HTMLImageElement的對象。我可以直接使用.className變量來訪問它的變量,但我無法調用它的Jquery .hasClass()方法。爲什麼是這樣?

+0

你需要執行這個當DOM加載 – Joren

+0

'document.getElementsByTagName'返回對象的數組!不是一個對象。 – mehdi

+0

我應該指定我爲這個問題的目的選擇了一個帶圖像的元素[1]。 – aoa

回答

7

因爲.hasClass()是一個jQuery函數。你可以在jQuery對象上調用它,而不是本地DOM對象。簡單的解決方案是創建一個jQuery對象:

var domElement = document.getElementById('something'); 
var hasSomeClass = $(domElement).hasClass('some-class'); 

當然,如果你使用jQuery已經,爲什麼不只是這樣做:

var $images = $('img'); 
+0

在javascript/ECMAScript論壇的上下文中,DOM對象是主對象,而非本地對象。 – RobG

+0

謝謝,這就是我一直在尋找的東西,我完全忘記了我可以選擇那種出於某種原因的圖像元素。我猜getElementById是一個JavaScript函數,因此不會爲JQuery函數返回適當類型的對象。 – aoa

0

這是因爲jQuery元素是從HTML不同元素。 jQuery元素是特殊的jQuery對象,你只能在這些對象上運行jQuery方法。但是,你可以把一個元素的jQuery這樣的:

var images=document.getElementsByTagName('img'); 
var jQueryImages=$(images) 

,但你也可以用jQuery做它直接像這樣:

var jQueryImages=$('img'); 

而最後一件事,就是功能不返回一個HTMLImageElement。它返回一個NodeList,因爲文檔中可能有多個img元素。 A NodeList本質上是一組元素。

1

jQuery中:

$("img").each(function(){ 
    if($(this).hasClass("className")){ 

    } 
}); 
相關問題