HTML:
<section class="get">
<li><button onclick="ShowMyTables()" id="show_my_tables"> Show my tables</button></li>
<ul id = orders>
</ul>
</section> `
JS:
теоретически, когда я нажму «show_my_tables», я увижу список ссылок с именами моей таблицы.И когда я нажимаю на одну из этих ссылок, я бы увидел имя этой таблицы,но когда я нажимаю «show_my_tables», все мои onclick выполняются
function ShowMyTables(){
$(orders).empty();
$.ajax({
type:"GET",
url:"/table/show_my_tables",
success:function(data){
console.log(data);
for (var i = 0; i < data.nameArr.length; i++) {
$(orders).append("<li>Table name:<a onclick = '"+ShowThisTable(data.nameArr[i])+"'> " + data.nameArr[i] + "</a></li>");
}
}
})
Ваша кнопка должна быть вне списка, потому что в противном случае она будет уничтожена при вызове
empty()
, поэтому<li>
теги вокруг вашего<button>
не нужны.Значение Id для вашего неупорядоченного списка должно быть заключено в кавычки, как это:
<ul id="orders">
. При доступе к списку ордеров через $ function ваш аргумент также должен быть заключен в кавычки, так как это строка"orders"
, а не переменная с именемorders
.Кроме того, если вы выбираете элемент по id, вы должны добавить его id с#, Поэтому для получения элемента id «orders» вы должны использовать
$("#orders")
.Кроме того, я заметил, что вы хотите назначить прослушиватель onclick динамически создаваемым элементам списка, но ваш подход неверен. То, как вы это делаете сейчас, вы выполняете функцию
ShowThisTable
, а затем добавляете ее возвращаемое значение в строку с помощью HTML.Учитывая множество основных ошибок в коде, я бы предложил вам пересмотреть синтаксис HTML и javascript, прежде чем переходить к более сложным темам, таким как AJAX.
Все ваши
onclick
функции запускаются, потому что вы вызываетеShowThisTable()
во время каждой итерацииfor
цикла."ShowThisTable("
и")"
должны быть напечатаны внутри строковых литералов, которые вы объединяете:А
id
для ваших<ul>
элементов необходимо заключать в кавычки: