2015-10-10 90 views
1

我想從onclick事件傳遞屬性和它們的值到JavaScript函數,但它們返回undefined。發送onclick控制到javascript函數

<script type="text/javascript"> 

function addParameters(control) { 
     alert(control._userid); 
     alert(control._flag); 
} 

<button text="Button" ID="btn1" _userid="datatest" _flag="datafromdatabaase" title="Add this to the list" onclick="addParameters(this);"> Button</button> 
+0

[使用Javascript/jQuery從HTML元素獲取所有屬性]的可能重複(http://stackoverflow.com/questions/2048720/get-all-attributes-from-a-html-element-with-javascript- jQuery) – Lucio

+0

你不應該使用你自己的任何屬性來製作HTML中不存在的屬性。改爲使用自定義數據屬性。 – CBroe

回答

2

您將無法訪問這些自定義屬性直接這樣。您需要通過元素的attributes屬性訪問它們。試試這個:

<button text="Button" ID="btn1" _userid="datatest" _flag="datafromdatabaase" title="Add this to the list" onclick="addParameters(this);"> Button</button> 
 

 
<script type="text/javascript"> 
 

 
function addParameters(control) { 
 
    alert(control.attributes._userid); 
 
    alert(control.attributes._flag); 
 
} 
 
</script>

如果你想獲得這些屬性值,試試這個:

<button text="Button" ID="btn1" _userid="datatest" _flag="datafromdatabaase" title="Add this to the list" onclick="addParameters(this);"> Button</button> 
 

 
<script type="text/javascript"> 
 

 
function addParameters(control) { 
 
    alert(control.attributes._userid.nodeValue); 
 
    alert(control.attributes._flag.nodeValue); 
 
} 
 
</script>

+0

非常感謝你,我花了半天的時間試圖弄明白爲什麼它不適用於Chrome。你真棒,再次感謝。 – JOZO

1

我建議你添加ID到按鈕元素,然後使用該ID綁定單擊事件偵聽器:

// Html 
<button id="btn1" _userid="1" flag="true"> </button> 

//Javascript 
document.getElementById("btn1").addEventListener('click', click); 

function click(event){ 
    var attrs = event.target.attributes; 
    var userid = attrs._userid; 
    var flag = attrs._flag; 
} 

我推薦這種方法超過onclick javascript事件,因爲這樣你就可以將javascript與javascript分開。該html負責視圖和表示數據。 JavaScript負責與視圖和功能的交互。通過這種方式,數據和功能的表示是分離的和獨特的。