2016-10-16 43 views
0

我收到JSON格式的響應,其中包含一個_id,它在服務器端的Mongodb中作爲ObjectID存儲。但是,我將它更改爲一個字符串,它仍然不會讓我添加它。是因爲它有數字嗎?我需要元素可以通過id進行識別,所以如果我不能這樣追加,是否還有其他方法可以通過id引用元素?元素D3無效字符

var group = d3.select("#containerthing"); 
var id = response._id.toString(); 
console.log(id); 
//5802bc044f6313c1097de4a2 
var responseNode = group.append(id).attr("fill","black").attr("x", 15).attr("y", 15).attr("width", 190).attr("height", 90); 
//InvalidCharacterError: String contains an invalid character 
+0

爲什麼你需要追加到_id?我在附加函數中看到過,總是傳遞一個HTML元素作爲參數。 – slorenzo

+0

@SebastianLorenzo我不追加_id。據我瞭解,_id表示d3使用的排序的元素名稱。如果我用''foo''替換'_id',它可以正常工作。 – db2791

回答

0

原因是你不能用數字開始元素。我必須這樣做:

var responseNode = group.append("n"+id).attr("fill","black").attr("x", 15).attr("y", 15).attr("width", 190).attr("height", 90); 

得到它的工作。

1

我相信我理解你的問題。

D3的.append()

如果指定類型爲字符串,追加這種類型(標籤名稱)的每個所選元素的最後一個孩子,或者在更新選擇下一後繼兄弟的新元素如果這是一個輸入選擇。 [...]該函數應該返回一個要附加的元素。 (該功能通常會創建一個新的元素,但它可能會改爲返回現有的元素。

爲什麼.append()正常工作,如果你通過'foo'?因爲D3追加一個自定義標籤的元素。如果您在控制檯中看到我'相信你會看到<foo>...</foo>

爲什麼.append()工作錯的,如果你通過'5802bc044f6313c1097de4a2'?自定義標籤元素不能以數字開頭。不要使用_id,你應該嘗試尋找另一個模式識別你的元素。

我希望可以幫到