2013-07-04 1 views
0

Я пытаюсь использовать некоторый javascript-код в HTML-странице, но в нем не работает (все внутри проекта Ruby on Rails). Так у меня есть следующий HTML-кодВызов js-функции из HTML не работает правильно

<a href="#" compilation_id = 51 onclick="start_render(this)">Render</a> 

Что мне нужно, чтобы получить параметр «compilation_id» внутри JS-функции

<script type="text/javascript" language="javascript"> 

    function start_render(event){ 
     var comp_id = $(event.target).attr('compilation_id'); 
     alert(comp_id); 
    ..... 

я использую предупреждения (comp_id) только для отладки в порядке чтобы увидеть, если я получу данные соответствующим образом. Но то, что я получаю, является «неопределенным». Когда я устанавливаю значение переменной внутри js-функции, все будет ОК. Таким образом,

var comp_id = 51; 
    alert(comp_id); 

хорошо работает, я получаю «51».

В чем моя ошибка?

Заранее спасибо.

+0

функции start_render (событие) { вар comp_id = $ (событие) .attr ('compilation_id'); alert (comp_id); – Debadatt

+0

http://jsfiddle.net/cPwNP/ использовать jquery – softsdev

+0

добавить ссылку 'class to anchor'' eg: render', затем поместить '$ ('. Render'). Click (function() { alert ($ (this) .attr ('compilation_id')); }) ' – softsdev

ответ

0

Вы передаете this объект, который не имеет цели имущество.

Если вы хотите получить event цель, изменить код, как

function start_render(object){ 
    event = event || window.event 
    var comp_id = $(event.target).attr('compilation_id'); 
    ... 
} 
-2

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

onclick="start_render(event)" 

JS:

function start_render(e){ 
    var comp_id = $(e.target).attr('compilation_id'); 
    alert(comp_id); 

Или:

onclick="start_render(this)" 

JS:

function start_render(element){ 
    var comp_id = $(element).attr('compilation_id'); 
    alert(comp_id); 

Или:

onclick="start_render()" 

JS:

function start_render(){ 
    var comp_id = $(event.target).attr('compilation_id'); 
    alert(comp_id); 

Или:

onclick="start_render.call(this)" 

JS:

function start_render(){ 
    var comp_id = $(this).attr('compilation_id'); 
    alert(comp_id); 

Лучший способ:

<a href="#" compilation_id="51" id="compilation51">Render</a> 

JS:

$('#compilation51').bind('click', function(){ 
    var comp_id = $(this).attr('compilation_id'); 
    alert(comp_id); 
}); 
+0

спасибо, это помогло! – jenia

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