javascript在php foreach

时间:2015-06-17 20:32:35

标签: javascript php html html5 loops

请考虑以下事项:

<? php foreach($queryResult as $res) : ?>
    // output all table columns
    <form onsubmit="return javascriptFunction(); " method="post">
    <button id="b">edit</button>
    </form>
<?php endforeach; ?>

显然,当调用javascript函数时,按钮的id是相同的,所以:

document.getElementById(b).value;

没有像预期的那样工作。有可能:

  • 在循环中创建每个按钮时,为每个按钮指定一个唯一的id属性吗?
  • 假设我单击第三个按钮,javascript函数是否可以使用单击的按钮?

我完全知道它是如何发生的,看起来没有办法解决它。这可能吗?

2 个答案:

答案 0 :(得分:2)

要为每个按钮指定一个不同的ID,您可以这样做:

<?php 
$i = 1; 
foreach($queryResult as $res) {  ?>
    // output all table columns
    <form onsubmit="return javascriptFunction(); " method="post">
    <button id="element-<?= $i ?>">edit</button>
    </form>
<?php $i++; } ?>

对于第二个问题:如果您想将按钮的ID传递给javascriptFunction,您可以通过以下方式修改代码:

return javascriptFunction(<?= '\'element-'. $i . "'" ?>); 

当调用javascriptFunction时,它将作为参数传递按钮的id,你可以在函数中使用它

答案 1 :(得分:0)

你可以使用forach然后你不必跟踪id迭代器

foreach($queryResult as $id=>$res) {  ?>
    // output all table columns
    <form onsubmit="return javascriptFunction(); " method="post">
    <button id="element-<?php echo $id ?>">edit</button>
    </form>
<?php $i++; } ?>

另外,FWIW,当然有多个具有相同ID的元素的可怕做法,但document.querySelectorAll('#someID');会在大多数浏览器中为您提供多个元素。