2015-10-10 1 views
1

Я пытаюсь передать атрибуты и их значения функции javascript из события onclick, но они возвращены 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

Возможный дубликат [Получить все атрибуты из HTML-элемента с Javascript/jQuery] (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

Большое вам спасибо, я потратил полдня, пытаясь понять, почему он не работает на хроме. Ты потрясающий, еще раз спасибо. – JOZO

1

Я предлагаю вам добавить 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 событию, потому что таким образом вы продолжаете разделять html с javascript. Html отвечает за представление и представляет данные. javascript отвечает за взаимодействие с представлением и функциональностью. Таким образом, представление данных и функциональность разделены и различны.