Sinisa Janjetovic Ответов: 1

Проблема с кнопками onclick hmtl и javascript


У меня есть одна главная html-страница с боковой панелью (с двумя разными ссылками) и один раздел, в котором я должен показать таблицу, в зависимости от того, какие ссылки в боковой панели я нажимаю.

Первая ссылка показывает таблицу с пользователями в разделе, а если я нажму на вторую ссылку, то она покажет таблицу городов в том же разделе. Я не перезагружаю заголовок страницы и боковую панель, а только часть раздела, в которой будут показаны таблицы (по одной за раз). Обе таблицы будут иметь кнопки Добавить, отредактировать, удалить.

Я делаю это с помощью javascript и ajax-вызова.

Проблема в том, что когда я нажимаю на ссылку firts на боковой панели, таблица пользователей будет отображаться на странице, и все кнопки правильно включены.

После этого я нажимаю на вторую ссылку на боковой панели, и появляется таблица городов, но кнопки не работают.

Когда я снова возвращаюсь по первой ссылке боковой панели, даже те кнопки, которые раньше работали, теперь не работают.

Как решить этот вопрос?

Спасибо

Что я уже пробовал:

Попытался просмотреть, чтобы найти проблему, но не смог ее решить

1 Ответов

Рейтинг:
1

Visweswaran N

Я не совсем понимаю вашу проблему, но постараюсь объяснить на своем уровне.

Ваша проблема заключается в следующем:
1. у вас есть кнопка, которая не работает
2. Вам нужно показать таблицы по ссылке/кнопка нажата.

Вот пример кода для вашего обучения

<!-- SWAMI KARUPPASWAMI THUNNAI -->

<!DOCTYPE html>
<html>
<head>
	<title>Buttons and Tables</title>
	<script type="text/javascript">
		// For showing and hiding table
		function show_table(_id)
		{
			let div = document.getElementById(_id);
			// If not displayed
			if(div.style.display==="none")
			{
				div.style.display = "block"; // then display
			}
			else
			{
				div.style.display = "none"; // hide
			}
		}

		// For adding rows
		function add_row(_id)
		{
			let table_one = document.getElementById(_id);
			let row =table_one.insertRow(-1);
			let c1 = row.insertCell(0);
			let c2 = row.insertCell(1);
			c1.innerText ="SOMETHING";
			c2.innerText ="SOMETHING";
		}
	</script>
</head>
<body>
	<!-- 
		A section of code can be wrapped into a conatiner called div.
		id is an unique identifier for div. We will create two div's with two tables.
	-->
	<div id="div_one" style="display: none;">
		<table id="table_one" border="1">
			<thead>
				<tr>
					<th>SNO FOR TABLE 1</th>
					<th>NAME FOR TABLE 1</th>
				</tr>
			</thead>
			<tbody>
				<!-- Do something -->
			</tbody>
		</table>
	</div>

	<div id="div_two" style="display: none;">
		<table id="table_two" border="1">
			<thead>
				<tr>
					<th>SNO FOR TABLE 2</th>
					<th>NAME FOR TABLE 2</th>
				</tr>
			</thead>
			<tbody>
				<!-- Do something -->
			</tbody>
		</table>
	</div>

	<!-- Button 1 when clicked will show table 1 and Button 2 will do the same for table 2. Clicking the same button
	will do vice versa -->
	<!-- this.value takes the data from value attribute in the present tag which is button here-->
	<button type="button" onclick="show_table(this.value);" value="div_one">SHOW TABLE 1</button>
	<button type="button" onclick="show_table(this.value);" value="div_two">SHOW TABLE 2</button>

	<!-- Add rows in tables -->
	<button type="button" onclick="add_row(this.value)" value="table_one">ADD A ROW IN TABLE 1</button>
	<button type="button" onclick="add_row(this.value)" value="table_two">ADD A ROW IN TABLE 2</button>
</body>
</body>
</html>


Sinisa Janjetovic

Спасибо.

На самом деле моя проблема не в том, чтобы показывать таблицы, мне это удалось. Каждая таблица имеет принадлежащие ей три кнопки (Добавить, отредактировать, удалить).

Проблема в том, что когда я получаю таблицу 1, все кнопки работают. После этого я перехожу к таблице 2, и все три кнопки, которые принадлежат таблице 2, теперь не работают. После этого я возвращаюсь к таблице 1 и кнопкам таблицы 1, которые работали должным образом, теперь они не работают.

Теперь я выразился яснее?

Visweswaran N

Не могли бы вы поделиться кодом?

Sinisa Janjetovic

Он слишком большой, несколько файлов. Есть ли какой-нибудь способ отправить вам прямое сообщение?