2015-11-06 52 views
0

我有一個節點,我分配了一個數據屬性data-myid = "id3"。當我嘗試打印此屬性的值時,我沒有收到id3,但是收到了nullundefined在Javascript中獲取數據屬性時出錯

這是代碼:

console.log("node2"); 
console.log(node2); 
console.log("node2.getAttribute(\"data-myid\") = " + node2.getAttribute("data-myid")); 
console.log("node2.getAttribute(\"myid\") = " + node2.getAttribute("myid")); 
console.log("node2.dataset.myid = " + node2.dataset.myid); 

我嘗試不同的方法,但印刷品我得到的是:

enter image description here

爲什麼?我怎樣才能得到myid的價值? 非常感謝!

PS:爲什麼使用data attribute而不是id取決於我的應用程序。所以我不會改變myidid

另外我會只有使用JavaScript,而不是jQuery。

JSFiddle: 我從來沒有使用JSFiddle,我不知道它是如何工作的。我這樣做https://jsfiddle.net/xy1jxeos/但不完全是我的代碼,在這裏被簡化


OK有什麼不對。我創建了這個簡單的文件,看看問題是否在其他地方:

<!DOCTYPE html> 
<html> 
<head> 
    <title>get attribute</title> 
</head> 
<body> 

    <div id="main" data-myid="id3"></div> 

    <script> 
     console.log(document.getElementById("main")); 
     console.log(document.getElementById("main").getAttribute("myid")); 
    </script> 

</body> 
</html> 

而問題仍然存在!這裏是印刷品:

<div id="main" data-myid="id3"></div> 
null 

這怎麼可能?我錯在哪裏?

+0

我以這種方式使用JavaScript添加屬性:'node.childNodes [i] .dataset.myid = att.myID;'。使打印工作正常,屬性被分配。 – lonely

+0

顯示如何聲明並分配'node2'。另外,你可以在SO片段或JSFiddle中重現這個問題嗎? –

+0

哪個瀏覽器是這樣的(看起來像chrome) –

回答

-1

看起來有什麼不對node2 請提供你如何分配它。檢查這個代碼jsfiddle

var node2 = document.getElementById(element).children[0]; 

如果你不喜歡這一點,那麼它的確定。