【发布时间】:2019-01-16 08:28:05
【问题描述】:
我在动态生成的页面上列出了问题和选项(多项选择题)。我想将此提供给内容管理团队,如果他们发现任何有问题的错误,他们可以单击“注释”,然后会为该问题打开一个文本区域,他们可以编写该注释。所以现在如果我点击一个问题,文本区域会打开,但是如果我点击下一个问题的“注释”选项,文本区域会在前一个问题的部分打开。如何纠正这个问题,我环顾四周,但没有任何线索。让我知道我哪里出错了。
<?php if($row['section'] == 1) {?>
<ul class="list-group">
<li class="list-group-item active">
<div class="radio noMargin" id="<?php echo $sectionOne ; ?>info"><?php echo $no ; ?> <span class="glyphicon glyphicon-arrow-right"></span></div><?php echo "<font color='pink'>Ques ID :[".$row['id']."]</font>";?><div class="question"><?php echo $row['question'] ; ?></div>
<div style="float:right; margin-top:-20px;">
<div onclick= "myFunction()"> <font color='yellow'>Notes</font></div>
Marks:<?php echo $row['marks'] ; ?></div></li>
<?php
echo '<input type="hidden" name="question[]" id="questionId" value="'.$row['id'].'">';
echo '<input type="hidden" name="attempt" value="'.$attemptCount.'">';
echo '<input type="hidden" name="unit_id" value="'.$unit_id.'">';
echo '<input type="hidden" name="chapter_id" value="'.$chapter_id.'">';
$questionId = $row['id'] ;
$sqO =$db->query("SELECT id, options from tbl_options_mock_question WHERE question_id = ".$questionId."");
while($rowO=mysql_fetch_array($sqO))
{
?>
<li class="list-group-item wrp_radio">
<div class="radio noMargin">
<label>
<input disabled type="radio" class="checkedInfo" alt="<?php echo $no ; ?>" name="optionAns<?php echo $i ; ?>" value="<?php echo $rowO['id'] ; ?>">
<?php echo $rowO['options'] ; ?></label>
</div>
</li>
<?php } ?>
<script type="text/javascript">
function myFunction() {
document.getElementById("demo").innerHTML += "<div class='comment_form'><form action='#' method='post'><textarea class='span10' name='Comment' rows='6'></textarea><br><input class='btn btn-primary' type='submit' value='Reply'></form></div>";
}
</script>
</ul>
<div id="demo"></div>
<?php $i++;$no++; ?>
<?php } ?>
【问题讨论】:
-
很难用所有的 php 象形文字和使用
innerHTML=来分辨,而不是仅仅将 html 添加到页面并显示/隐藏它 - 但它看起来像你的<div id=demo代码驻留在里面 一个循环 - 因此您将拥有多个具有相同 id 的 div - 当您尝试按 id 查找一个时,它只会得到第一个。 -
此外,+= 将在添加时清除前一个文本区域的任何内容,因为代码不会复制表单的内容。