2012-09-28 34 views
1

jQuery代碼:的jQuery的console.log()與警報()

$(document).bind('click', function(e) { 
    console.log(e.target); 
    alert(e.target); 
}); 

e.target包含正被點擊的對象的名稱。 出於演示的目的,如果我點擊的輸入元件上,上面的代碼打印如下:
對於console.log()

<input class="buton" type="submit" value="Send" name="Send"> 

對於alert()

[object HTMLInputElement] 

然而,如果我console.log(e.target)console.log(e.target.toString())替換,它打印同樣的事情alert(),意思是:

[object HTMLInputElement] 

我的範圍來存儲console.log()返回到一個變量中的HTML代碼,但我無法理解的行爲。

回答

2

在事件處理程序,e.target是點擊源自元素。大多數瀏覽器控制檯將其顯示爲表示元素的html字符串。

當您使用alert時,所提供的參數將轉換爲字符串,因此您會看到[object HTMLInputElement]

要到一個元素的HTML,使用方法:

alert(e.target.outerHTML); 
0

控制檯工具以設計者認爲有用的方式顯示對象,它不僅調用對象的toString()方法,與alert相反。

如果你想獲得你的目標的HTML代碼,只需做的時候,你希望看到一個對象的屬性

var html = e.target.outerHTML; 
+2

難道你需要使用jQuery來包裝它首先調用'HTML()'之前?此外,不會'html()'返回內部HTML? (而不是整個事情) –

+0

@KemalFadillah對,固定。 –

+0

謝謝!瞭解outerHTML也:-)。作品! – Schutzstaffel

1

console.log是有用的,但alert()只顯示一個對象的類型,如果你希望看到一個元素的實際HTML,你可以使用DOM元素對象的outerHTML屬性:

alert(e.target.outerHTML); 

http://jsfiddle.net/phLVu/

+0

如何調試一個變量,沒有'console.log'?數據類型,值,存儲在內的所有內容。類似於PHP的print_r()。 – Schutzstaffel

+0

@Schutzstaffel有在JavaScript中沒有這樣的方法,你可以用'爲in'循環,讀一個對象的屬性,但使用控制檯。日誌是最好的方法。 – undefined

0

看到這個other SO question

你必須使用outerHTML屬性。

$(document).bind('click', function(e) { 
    alert(e.target.outerHTML); 
}); 

看到的jsfiddle這裏:http://jsfiddle.net/xhHPb/

+0

請記住,'outerHTML'不是元素的屬性。這是一個財產。如果你使用的是jQuery 1.6+,你會想使用'.prop()'而不是'.attr()'。 –

+0

是的,只是編輯並刪除它;)謝謝 – palmplam

+0

尼斯:-)現在我明白了,它很清楚! – Schutzstaffel