Функции onclick в в href - PHP - Javascript

У меня есть следующий код в формуляре, принадлежи колонне таблицы с данными, подобранными с базы данных 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;
}
1
задан 16.11.2016, 18:17
4 ответа

Протестируй делать эти изменения:

  • Проходит по параметру идентификация реестра в функции 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>
    
3
ответ дан 24.11.2019, 12:35
  • 1
    удалила моя и я у себя остаюсь с этим ответом +1 –  sioesi 16.11.2016, 14:21
  • 2
    @sioesi твой ответ функционировал и, хотя ты подумаешь, что é sta смоги быть лучше, твоя tambié n у него есть Ваши преимущества и смоги оставаться как альтернатива, потому что он funcionará в другого пользователя. Не harí в отсутствие удалять ее. Есть много способов делать то, что OP ищет, нет из-за qué ограничиваться одной. –  Alvaro Montoro♦ 16.11.2016, 14:24
  • 3
    Оба функционировали. Большое спасибо, я буду давать ему пару возвращений solució n, y intentaré делать из-за моего счета. Así он изучается, ошибок... –  omaza1990 16.11.2016, 14:24
  • 4
    @AlvaroMontoro я она повторно открыл, если он служит, привет! –  sioesi 16.11.2016, 14:26

То, что ты должен делать, состоит в том, чтобы 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

1
ответ дан 24.11.2019, 12:35
  • 1
    Как только оно я функционирует и entendí edité вопрос, чтобы видеть, есть ли solució n относящийся к моему новому вопросу. –  omaza1990 16.11.2016, 17:20

Ты поместил:

document.getElementById("id").innerHTML = texto;

, Когда ты в действительности нуждаешься в том, чтобы выбрать id, который ты хочешь, чтобы он затронул:

document.getElementById("ID_AL_QUE_AFECTAR").innerHTML = texto;
0
ответ дан 24.11.2019, 12:35

Я буду помещать тебе альтернативу в ту, кто избегает помещать себе код язык сценариев 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>
0
ответ дан 24.11.2019, 12:35