2013-02-01 16 views
0

在後面我的代碼,我使用的字符串常量和的String.Format來創建一系列SVG元素的這樣:包含在HTML(SVG)元件的數據/ datakey

const string BoxTemplate = "<rect x=\"{0}\" y=\"{1}\" height=\"{2}\" width=\"{3}\" fill=\"{4}\" stroke=\"#707070\" onmouseover=\"showToolTip()\"/>"; 
string s = String.Format(BoxTemplate, x, y, h, w, color); 

我然後使用文字控件來渲染圖像。

我想要在元素中包含數據或至少一個數據鍵,以便鼠標懸停或使用其他事件。我曾考慮將id設置爲datakey,但有些情況下,多個圖像會引用相同的數據。

什麼是讓我的javascript函數能夠識別哪個元素被「蒙上陰影」並訪問其數據/數據鍵的最佳方式。

回答

0

您可以使用this作爲函數的參數。如果你在渲染時有這個參數,你也可以添加一個額外的參數。

這個工作對我來說:

<html> 

    <script> 
     function showToolTip(obj, datakey) { 
      alert("ID=" + obj.id + " datakey=" + datakey); 
     } 
    </script> 
    <body> 
     <svg> 
      <rect id="The_ID" x="10" y="10" height="100" width="100" fill="black" stroke="#707070" onmouseover="showToolTip(this, 'datakey1')"/> 
     </svg> 
     <svg> 
      <rect id="The_other_ID" x="110" y="10" height="100" width="100" fill="black" stroke="#707070" onmouseover="showToolTip(this, 'datakey2')"/> 
     </svg> 
    </body> 
</html> 
+0

如果您在渲染時擁有它,你可以把它添加作爲參數傳遞給你的函數。我改變了這個例子來證明這一點。 – javabeangrinder

+0

有用的,但不是我想要解決的所有問題。每個矩形都對應於數據庫中的一個項目。我正在尋找將數據鍵存儲在元素中的某處。我不知道我可以使用id屬性,因爲不是所有的數據鍵都是唯一的。謝謝。 - –

+0

剛剛重新審視這個,意識到我錯過了你在做什麼。將鍵存儲爲函數調用中的文字。咄。 –