2012-10-14 16 views
13

selection.text(' ')似乎將特殊字符轉換爲它呈現的實際文本,而不是像我想要的空間。有沒有辦法阻止選擇的text()方法爲我逃跑?對於上下文來說,這是一個表格單元格,對於選擇中的某些元素是空的,我需要這裏的空間以便單元格可以正確渲染。如何使用d3.js selection.text()方法添加 

回答

7
​​

這裏重要的一行是調用選擇的.text()將設置每個元素的textContent屬性。所以你的情況做了正確的事情是使用

selection.text(' '); 

所以,如果你想使用的空間,那麼你只需要使用空格的文本,而不是HTML編碼空間。如果你想使用HTML編碼的字符,那麼你必須將內容視爲innerHTML。

selection.html(' '); 
30

使用JavaScript Unicode轉義而不是HTML實體。   in HTML表示Unicode字符U + 00A0所以

selection.text('\u00A0') 

應該做你想做的。

+1

對於需要填充實際空間的許多用途,使用selection.text('\ u00A0')而不是selection.text('')將很重要;前者將具有有限的邊界框,後者不會。 – Andy

+1

有誰知道爲什麼unicode工作,但HTML實體不?只是好奇... – mike

+1

@mike它取決於。如果你在HTML文件中內嵌JavaScript片段,那麼實體_might_可以工作,因爲JavaScript引擎可以看到實體的擴展而不是實體本身,但是如果你在自己的文件中有JavaScript,那麼'selection.text('  ')'會將文本設置爲&,nbsp,分號。 –