2016-10-16 12 views
0

私は、サーバー側のMongodbにObjectIDとして格納されている_idを含むJSON形式の応答を取得しています。しかし、私はそれを文字列に変更し、それでも私はそれを追加することはできません。それは数字があるのでそれですか? 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に追加する必要がありますか? append関数では、常にHTML要素を引数として渡しています。 – slorenzo

+0

@SebastianLorenzo私は_idに追加していません。私の理解では、_idはd3が使用する並べ替えの要素名を表します。 '_id'を' 'foo''に置き換えると、うまく動作します。 – 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は、カスタムタグの要素を追加しているので?正常に動作。あなたがコンソールに表示された場合あなたが'5802bc044f6313c1097de4a2'を渡すと.append()は、カスタムタグ要素は数字で始めることはできません。あなたが_idを使用していない、あなたは別のものを見つけることを試みるべきであるか間違って動作し、なぜあなたは<foo>...</foo>

が表示されますことを確認してくださいI'amあなたの要素を識別するためのパターン

私は助けて欲しいと思っています。