Как прочитать динамические данные, передаваемые в обработчике событий в динамической таблице

0

Я динамически строю таблицы, используя jquery.

В следующем фрагменте кода, как я могу прочитать someValue в методе prepareDiv()?

 $( document ).ready(function() {
        var someValue = "DummyValue"
            html += '<tr id="resRowId' + rowindex + '" class="RsrvnRowClass">' +
                    '<td><a href="#" onclick="prepareDiv('+ someValue +');"><img src="../images/downarrow.jpg"></td></tr>';

        $('#resTable tr').first().after(html);
 });



function prepareDiv(value){
            alert("value" + value);
}

Я использую IE. После вызова ready(), я получаю ошибку. DummyValue is undefined.

  • 0
    Это весь код?
  • 0
    Просто кусок. Я просто хочу передать переменную в методе. Мне не хватает синтаксиса, я думаю.
Теги:

3 ответа

1
Лучший ответ

Проблема в том, что вы получаете сгенерированный код, который выглядит так:

onclick="prepareDiv(DummyValue);"

Отсутствие котировок вокруг DummyValue означает, что он должен быть переменной, тогда как вы хотите, чтобы его рассматривали как строковый литерал, поэтому вам нужно добавить сами кавычки:

onclick="prepareDiv(\''+ someValue +'\');"

Это должно привести к:

onclick="prepareDiv('DummyValue');"
  • 0
    Это сработало. Если я правильно понимаю, это заключает в себе '+ someValue +' внутри \ 'и \'
0

Просто сделайте что-нибудь подобное... динамически добавленные ценности должны быть добавлены к tbody

 var table = $("table tbody");

    table.find('tr').each(function (i) {
        var $tds = $(this).find('td'),
            firstVal= $tds.eq(0).text(),
            secVal = $tds.eq(1).text(),
            thirdVal = $tds.eq(2).text();

        alert(firstVal);//etc..
    });
  • 0
    проверьте, ссылались ли вы на файл js вверху
0

У вас мало синтаксических ошибок, попробуйте следующее:

$( document ).ready(function() {
    var someValue = "DummyValue";
    html += '<tr id="resRowId' + rowindex + '" class="RsrvnRowClass">' +
            '<td>' + '<a href="#" onclick="prepareDiv(\''+ someValue +'\');"><img src="../images/downarrow.jpg" /></a></td></tr>';

    $('#resTable tr').first().after(html);
});
  • 1
    Что именно вы изменили? Если это просто добавление ' + ' между <td> и <a тогда это не нужно. Вы также удалили закрывающий </tr> , сделав HTML-код недействительным.
  • 0
    @AnthonyGrist Не его вина. Я пропустил tr, и это было не во-первых, я отредактировал вопрос и добавил tr. PS: Как вы выделяете фрагмент кода в комментариях?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню