Я динамически строю таблицы, используя 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
.
Проблема в том, что вы получаете сгенерированный код, который выглядит так:
onclick="prepareDiv(DummyValue);"
Отсутствие котировок вокруг DummyValue
означает, что он должен быть переменной, тогда как вы хотите, чтобы его рассматривали как строковый литерал, поэтому вам нужно добавить сами кавычки:
onclick="prepareDiv(\''+ someValue +'\');"
Это должно привести к:
onclick="prepareDiv('DummyValue');"
Просто сделайте что-нибудь подобное... динамически добавленные ценности должны быть добавлены к 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..
});
У вас мало синтаксических ошибок, попробуйте следующее:
$( 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);
});
' + '
между <td>
и <a
тогда это не нужно. Вы также удалили закрывающий </tr>
, сделав HTML-код недействительным.