У меня есть следующий код в формуляре, принадлежи колонне таблицы с данными, подобранными с базы данных MySQL.
echo "<td width=\"08%\" id=\"estado".$row['ID_OBLIGATORIO']."\">" ?>
<!-- Columna ESTADO del usuario. -->
<center>
<?php
$estado = 1;
echo "<a href='#' onclick='return cambiar_estado(".$row['ID_OBLIGATORIO'].");'\">";
echo "<img src=\"/imagenes/".$row['estado'].".gif\">";
echo "</a>";
?>
</center>
<?php
echo "</td>";
Сейчас у меня есть следующая функция, в которой кликая на каждом элементе идентификация колонны состояние таблицы, он поместил бы изображение x.gif, или давайте помещать серии текст "Мы нажали на это изображение" чтобы пытаться.
<script language="Javascript">
function cambiar_estado() {
var img = "";
var pregunta = confirm("¿Qué deseas elegir?");
if (pregunta == true) {
mg = "<center><img src='imagenes/0.gif'/></center>";
} else {
tmg = "<center><img src='imagenes/2.gif'/></center>";
}
document.getElementById("estado" +id).innerHTML = img;
}
</script>
То, что я хочу, состоит в том, чтобы, если начала все линии (все пользователи) имеют estado=1, я поддался clickear, чтобы спрашивать его: Ты хочешь измениться estado=0 или estado=2? И автоматически позвоните в изображение. Это уже я считаю это сделанным, но... Я издаю вопрос: Я прочитал, что не могут менять себе выборы alert или confirm () - Отменять ó Допускать, - только, используются ли они plugins или jQuery. Это так?
Почему со следующим кодом я не функционирует функция? Конечно, он не дает мне неудачи в консоли..., редкое что не должно брать "id".
function cambiar_estado(id) {
var imagen = "";
//alert("El ID elegido es: "+id);
var pregunta = confirm("¿Qué deseas elegir?");
if (id == '1') {
if (pregunta == true) {
imagen = "<center><img src=\"/imagenes/0.gif\"></center>";
} else {
imagen = "<center><img src=\"/imagenes/2.gif\"></center>";
} else if (id == '0') {
if (pregunta == true) {
imagen = "<center><img src=\"/imagenes/1.gif\"></center>";
} else {
imagen = "<center><img src=\"/imagenes/2.gif\"></center>";
} else {
imagen = "<center><img src=\"/imagenes/0.gif\"></center>";
} else {
imagen = "<center><img src=\"/imagenes/1.gif\"></center>";
}
document.getElementById("estado" +id).innerHTML = imagen;
}
Протестируй делать эти изменения:
Проходит по параметру идентификация реестра в функции cambiar_estado
<?php
echo "<td width=\"08%\" id=\"estado".$row['ID_OBLIGATORIO']."\">" ?>
<!-- Columna ESTADO del usuario. -->
<center>
<?php
$estado = 1;
echo "<a href='#' onclick='return cambiar_estado(".$row['ID_OBLIGATORIO'].");'\">"; // Pasamos el ID
echo "<img src=\"/imagenes/".$row['estado'].".gif\">";
echo "</a>";
?>
</center>
<?php
echo "</td>"; ?>
Измени функцию javascript cambiar_estado
, для того, чтобы он принял идентификацию из-за параметра.
<script language="Javascript">
// Recibe ID
function cambiar_estado(id) {
var texto = "";
var pregunta = confirm("¿Qué deseas elegir?");
if (pregunta == true) {
texto = "¡Has presionado OK!";
} else {
texto = "¡Has presionado Cancelar!";
}
// Buscamos el DOMElement con id="estado[ID]"
document.getElementById("estado" + id).innerHTML = texto;
}
</script>
То, что ты должен делать, состоит в том, чтобы click был в <td>
, чтобы получать стоимость признака id
.
<td onclick="cambiar_estado(this);" width=\"08%\" id=\"estado".$row['ID_OBLIGATORIO']."\">
И функция
<script language="Javascript">
function cambiar_estado(row) {
var texto = "";
var pregunta = confirm("¿Qué deseas elegir?");
if (pregunta == true) {
texto = "¡Has presionado OK!";
} else {
texto = "¡Has presionado Cancelar!";
}
row.innerHTML = texto;
}
</script>
И чтобы получать, она пойдите только грубая с row.id
Ты поместил:
document.getElementById("id").innerHTML = texto;
, Когда ты в действительности нуждаешься в том, чтобы выбрать id, который ты хочешь, чтобы он затронул:
document.getElementById("ID_AL_QUE_AFECTAR").innerHTML = texto;
Я буду помещать тебе альтернативу в ту, кто избегает помещать себе код язык сценариев JavaScript inline (прямо в этикетках HTML), что-то, что рекомендуемое, потому что важно стараться отделять интерфейс функциональности, и потому что, если у тебя есть события inline, тогда ты не можешь присоединять больше одного.
Идея тогда состояла бы в том, чтобы прекращаться onclick
этикеток a
и добавлять драйверы события с addEventListener
в языке сценариев JavaScript. Другое преимущество этого метода состоит в том, что уже ты не имеешь по отношению к себе, почему волновать, перемещения IDs, ты можешь использовать this
что в этом контексте будет элементом, который был нажат ( a
).
Код оказался бы таким:
// lees todos los enlaces que hay dentro de las celdas con id comenzando por "estado"
var enlaces = document.querySelectorAll("td[id^=estado] a");
// para cada uno de esos enlaces
for (let x = 0; x < enlaces.length; x++) {
// añade un controlador del evento click
enlaces[x].addEventListener("click", function() {
// que realiza todo tu código
var texto = "";
var pregunta = confirm("¿Qué deseas elegir?");
if (pregunta == true) {
texto = "OK";
} else {
texto = "Cancelar";
}
// puedes usar this para hacer referencia al elemento pulsado
this.innerHTML = texto;
});
}
<table>
<tr>
<td width="08%" id="estado0">
<center>
<a href='#'>
<img src="/imagenes/1.gif" />
</a>
</center>
</td>
<td width="08%" id="estado1">
<center>
<a href='#'>
<img src="/imagenes/1.gif" />
</a>
</center>
</td>
<td width="08%" id="estado2">
<center>
<a href='#'>
<img src="/imagenes/1.gif" />
</a>
</center>
</td>
<td width="08%" id="estado3">
<center>
<a href='#'>
<img src="/imagenes/1.gif" />
</a>
</center>
</td>
</tr>
</table>