2013-05-11 3 views
1

Здесь я пытаюсь определить атрибут HTML, называемый zerg, и отображать его при щелчке по абзацу, но вместо этого он отображает «undefined» при нажатии. Что случилось с the code that I've written, и каков правильный способ сделать это?Настройка атрибутов элемента html inline

<p onclick = "alert(this.zerg);" zerg = "Why doesn't this work?">Click here!</p> 
+3

Атрибуты - это не то же самое, что и свойства. 'this.getAttribute (" зерг ");' хотя это недействительный атрибут. Вы можете использовать 'data-zerg', по крайней мере, совместимый с HTML5. –

+1

В качестве небольшого фона читайте: http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice и http://en.wikipedia.org/wiki/Unobtrusive_JavaScript – Xotic750

+2

«Ненавязчивый JavaScript» - религия. –

ответ

5

Для того, чтобы быть HTML5-совместимый, атрибут должен быть назван data-zerg вместо zerg. Попробуйте это:

<p onclick = "alert(this.getAttribute('data-zerg'));" data-zerg = "Now it works as intended!">Click here!</p> 

http://jsfiddle.net/QrrpB/1340/

+0

+1 для указания действительности html ... – PSL

+0

Что касается вашего ответа ... знаете ли вы об этом до того, как задали вопрос? –

+0

@squint Нет, я задал вопрос, потому что еще не нашел решения. –

3

попробовать это:

<p onclick = "alert(this.getAttribute('zerg'));" zerg = "Why doesn't this work?">Click here!</p> 
3

Вы можете использовать метод getAttribute():

<p onclick = "alert(this.getAttribute('zerg'));" zerg = "Why doesn't this work?">Click here!</p> 
0

Вы можете попробовать это: -

<p onclick = "javascript:alert(this.getAttribute('zerg'));" zerg="Now it works as 
intended!">Click here!</p> 

this относятся к текущему элементу. Таким образом, вы можете использовать this.getAttribute() как встроенный код.

Смежные вопросы