Проблема связана с вашими несоответствующими кавычками вокруг значения onclick
:
'<button class="tablinks" onclick="openCity(event, \'' + buttonNo + '\')">Button' + rowNo + '</button>'
function add_row() {
var rowNo = parseInt($("#numOfKids").val(), 10);
rowNo = rowNo++;
var buttonNo = "Button" + rowNo;
console.log(buttonNo);
var buttonHtml = '<button class="tablinks" onclick="openCity(event, \'' + buttonNo + '\')">Button' + rowNo + '</button>';
$("#divAnak").append("<div id='Anak" + rowNo + "' class='tabcontent'><h3>London</h3><p>London is the capital city of England.</p></div>");
$("#tabs").append(buttonHtml);
}
add_row();
function openCity(e, buttonNo) {
console.log(buttonNo);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="numOfKids" value="1" />
<div id="tabs"></div>
<div id="divAnak"></div>
Как говорится, лучше использовать далеко , чтобы вообще не использовать устаревшие атрибуты on*
.Поскольку вы уже включили jQuery на страницу, вы можете упростить это, используя вместо этого делегированный обработчик событий и сохраняя любые метаданные в атрибуте data
:
function add_row() {
var rowNo = parseInt($("#numOfKids").val(), 10);
rowNo = rowNo++;
var buttonNo = "Button" + rowNo;
var buttonHtml = '<button class="tablinks" data-button-no="' + buttonNo + '">Button' + rowNo + '</button>';
$("#divAnak").append("<div id='Anak" + rowNo + "' class='tabcontent'><h3>London</h3><p>London is the capital city of England.</p></div>");
$("#tabs").append(buttonHtml);
}
add_row();
$('#tabs').on('click', '.tablinks', function(e) {
console.log($(this).data('button-no'));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="numOfKids" value="1" />
<div id="tabs"></div>
<div id="divAnak"></div>
Вы можете сделать то же самое с функцией add_row()
, но это зависит от того, когда она вызывается.
И последнее, что нужно сделатьобратите внимание, что вы можете легко получить дубликаты атрибутов id
, используя эту логику, если при вызове add_row()
используется то же значение #numOfKids
.Этого следует избегать, поэтому я бы предложил изменить вашу логику, чтобы полностью не создавать эти id
атрибуты.