循环中的document.getElementById返回null

时间:2019-03-04 21:14:52

标签: javascript php loops getelementbyid

我使用PHP和Javascript 我的第一页是appel.php

在其中,我使用以下命令在php中创建一个表:ConstructAppel.inc.php 包含我数据库中的数据。

foreach ($rows as $row):
  $count = $count +1;
    echo "<tr>";
    echo "<td><button Onclick=ClickPresence('bt".$row['Id']."') id='bt".$row['Id']."' style='background-color:green;'>Oui</button></td>";
    echo "<td>" . $row['Nom'] . "</td>";
    echo "<td>" . $row['Prenom'] . "</td>";
    echo "<td>" . $row['Cat'] . "</td>";
    echo "<td><button onclick=window.location.href='vueparticipant.php?id=".$row['Id']."' id=". $row['Id'] ." class='material-icons'>assignment_ind</button></td>";
    echo "</tr>";
endforeach;
echo "</table>"

我想使用javascript(或其他方式)更改按钮的背景颜色

Php:

 $stmt = $db->prepare("SELECT * FROM dataappel WHERE Acti = '$ActiActu' AND Dat = '$Dat' AND Prof = '$Prof' AND Etab = '$Etab'");
  $stmt->execute();
  $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  $count = $stmt->rowCount();
  if ($count > 0) {
    $list = '';
    foreach ($rows as $r) {
      $list .= "bt".$r['IdEleve'].",".$r['Appel']."/";
    }

我的列表类似于:bt55,是/ bt45,否/ bt21,是。

我想要逗号后的值=是,那么bt55的背景是绿色的

这是我的脚本:

var list = '<?php echo $list; ?>'
    if (list != '') {
      ActuPresence(list);
    }

    function ActuPresence(list){
var list = '<?php echo $list; ?>'
  var a = list.split("/");

  for (var i = 0; i < a.length-1; i++) {
    var b = a[i].split(",");
    var btn = b[0];
    console.log(document.getElementById(btn)) ;  

    if (b[1] = "No"){
      console.log(btn);
      btn.style.backgroundColor = "red";
      console.log("No");
    }
        if (b[1] = "Yes"){
      btn.style.backgroundColor =  "green";
      console.log("Yes");
    }

但是document.getElementById(btn)返回null。

变量a,变量b和变量btn返回良好的值。 我知道bt55存在,因为当我单击它时,console.log返回良好的ID。

1 个答案:

答案 0 :(得分:0)

首先从按钮中删除onClick并为其添加类

g.has('spouse')

然后使用window.onload

echo "<td><button id='bt".$row['Id']."' style='background-color:green;' class='classname'>Oui</button></td>";

代码中的问题是页面准备就绪之前调用了ID,因此在执行时为空