#javascript #jquery #html #mysql #ajax
#javascript #jquery #HTML #mysql #ajax
Вопрос:
У меня есть 2 HTML-таблицы. Я пытаюсь изменить содержимое второй таблицы в зависимости от того, какая ссылка нажата в первой таблице.
Ниже приведен код, который заполняет первую таблицу:
$.each(tableResults, function () {
$('#table1 tbody:last-child').append('<td>' this '</td>');
});
И ниже приведен код, который заполняет вторую таблицу:
$(document).ready(function () {
var tableName = 'databaseTable1';
$.ajax({
url: 'http://localhost/api/Dynamic?table=' tableName,
dataType: 'Json',
success: function (tableResults) {
$.each(tableResults, function (index, value) {
if ($('#table2 th:last-child').length === 0) {
$('#table2 thead').append('<th>' value '</th>');
} else {
$('#table2 th:last-child').after('<th>' value '</th>');
}
});
}
});
});
Как вы можете видеть, таблицы заполняются динамически. Мне нужно знать, как превратить каждое значение в первой таблице в ссылку, которая изменит переменную tableName
на выбранное значение.
Затем страница должна обновиться и отобразить данные из выбранной таблицы. Если это поможет, у моей программы есть F#
серверная часть.
Также, кто-нибудь знает, как я мог бы установить tableNames
значение по умолчанию для первого значения table1
.
Любая помощь будет оценена.
Ответ №1:
Вы можете сохранить tableName
s в атрибуте элемента триггера (например, a
). Затем, когда пользователь нажимает на этот триггер, получите tableName
из атрибута using .attr()
.
Я не знаю вашего ответа, поэтому в моем примере есть фиктивный.
(Нажмите на любую строку и посмотрите tableName
в журнале.
var tableResults = [
{
name: 'dynamicTable1'
},
{
name: 'dynamicTable2'
}
];
$.each(tableResults, function () {
$('#table1 tbody:last-child').append('<tr><td><a data-table="' this.name '">' this.name '</a></td></tr>');
});
$(document).on('click','[data-table]', function(){
var link = $(this),
tableName = link.attr('data-table');
console.log(tableName);
// do your ajax call with tableName
// $.ajax({ ....
});
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<table id="table1">
<tbody></tbody>
</table>
<hr />
<table id="table2">
<tbody></tbody>
</table>
http://jsbin.com/jicihohama/edit?html , js, консоль, вывод
Примечания:
-
Затем страница должна обновиться и отобразить данные
Под обновлением вы подразумеваете ajax «обновление»? Иначе зачем вам нужен ajax?
-
Вы не можете вставить
td
,tbody
поэтому вам также нужно добавить строку (tr
).
Комментарии:
1. Спасибо за помощь. И последнее, я думал, что данные в table2 будут заменены новыми данными, но этого не произошло. Есть идеи, как удалить старые данные, не удаляя таблицу. Я пробовал такие вещи, как: document.getElementById(«table2»).deleteTHead();
2. Если я правильно понимаю, вы можете это сделать
$('#table2').html('')
, это удалит весь html#table2
. Таким образом, вы можете удалить толькоthead
илиtbody
содержимое, если хотите. Подкованный?