我遇到了这段代码的问题。我正在为自己制作一个论坛,以测试我的技能(looks like this),现在我无法显示正确的ID。我需要ID的东西,但是当我在这里测试这个代码时,它会为每个反应显示1个相同的ID。我不知道为什么?也许<script>
在foreach中不起作用?希望有人可以帮我解决这个问题。
$reacttie = $app->get_reactie($actieftopicid);
foreach ($reacttie as $reactie) {
echo '
<div class="timeline-footer">
<script type="text/javascript">
function printIt(){
alert(document.getElementById("abcId").value);
</script>
<form name="formName">
<input type=hidden id="abcId" name="abcName" value="'.$reactie['id'] .'"/>
<input class="btn btn-primary btn-xs" type=button value="Reageer" onclick="printIt()" />
</form>
</div>';
答案 0 :(得分:2)
这是一个经典错误:您正在创建具有相同ID的多个元素,因此document.getElementById("abcId")
将始终返回具有此ID的第一个元素。
答案 1 :(得分:0)
你的php部分是正确的,但你的javascript代码是错误的。目前,您有许多具有相同ID的元素,getElementById
仅返回第一个匹配的元素。相反,你应该是阶级和兄弟关系或类型。
除此之外,你多次定义printIt函数,这也不是一个好主意 - 将函数移到循环之外(或更好的事件,将整个javascript逻辑移动到外部.js文件中)
在您的情况下,还有一种更简单的方法,只需将id传递给函数:
$reacttie = $app->get_reactie($actieftopicid);
echo '<script type="text/javascript">
function printIt(id){
alert(id);
</script>';
foreach ($reacttie as $reactie) {
echo '
<div class="timeline-footer">
<form name="formName">
<input type=hidden name="abcName" value="'.$reactie['id'] .'"/>
<input class="btn btn-primary btn-xs" type=button value="Reageer" onclick="printIt(\''.$reactie['id'] .'\')" />
</form>
</div>';