それはspecificationsで、すぐそこです:CSSで
、(要素名、クラス、およびセレクタ内のIDを含む)の識別子がのみ文字を含めることができますが、[-ZA-Z0-9] ISO 10646文字U + 00A0以上、ハイフン( - )およびアンダースコア(_)。 2桁のハイフン、または1桁のハイフンで開始することはできません。識別子には、エスケープ文字とISO 10646文字を数値コードとして含めることもできます(次の項目を参照)。例えば、識別子「B & W?」は、 「B \ & W?」と書かれています。または「B¥26 W¥3F」と入力します。そのほかに(強調鉱山)
、~
は兄弟コンビネータである:
一般兄弟結合子は、単純なの二つの配列を分離する「チルダ」(U + 007E、〜)文字で構成されていますセレクタ。 2つのシーケンスによって表される要素は、ドキュメントツリー内で同じ親を共有し、第1のシーケンスによって表される要素は、第2のシーケンスによって表される要素に先行する(必ずしも必ずしもそうでない)。
あなたはまだそのIDを使用したいのであれば、あなたは"#my\\~div_chart"
を使用して、チルダをエスケープする必要があります。
d3.select("#my\\~div_chart").on("click", function(){
d3.select(this).style("background-color","teal")
});
<script src="https://d3js.org/d3.v4.min.js"></script>
<div id="my~div_chart">Click Me</div>
最後に、あなたの質問に、あなたはdocument.getElementById
と言いました働いた。ただし、document.querySelector
が失敗することに注意してください。