HTML <ol>为每个动态生成的选项显示1 </ol>

时间:2014-08-24 18:04:30

标签: html html-lists

我使用以下php代码使用<ol>标记呈现不同的选项。一切都很好,除了<ol>每个选项显示1。

 <ol>
     <li>
         <h3><?php echo $question ?></h3>
         <div>
             <input type="radio" name="question[<?php echo $id ?>]"
                    id = "php   " value="<?php echo $answer1 ?>" />
             <label for = "php"> <?php echo $answer1 ?></label>                     
         </div>
         <div>
             <input type="radio" name="question[<?php echo $id ?>]"
                    id = "php" value="<?php echo $answer2 ?>" />
             <label for = "php"><?php echo $answer2 ?><label>
         </div>
         <div>
             <input type="radio" name="question[<?php echo $id ?>]"
                    id = "php" value="<?php echo $answer3 ?>" />
             <label for = "php"><?php echo $answer3 ?></label>
         </div>
         <div>
             <input type="radio" name="question[<?php echo $id ?>]"
                    id = "php" value="<?php echo $answer4 ?>" />
             <label for = "php"><?php echo $answer4 ?></label>
         </div>
    </li>
</ol>

2 个答案:

答案 0 :(得分:1)

每个编号的列表项都必须有一个单独的<li>标记。

所以你的标记看起来应该是这样的:

<h3><?php echo $question ?></h3>

<ol>
    <li>
        <input type="radio" name="question[<?php echo $id ?>]" id="php<?=$answerId1?>" value="<?php echo $answer1 ?>" />
        <label for="php<?=$answerId1?>">
            <?php echo $answer1 ?>
        </label>
    </li>
    <li>
        <input type="radio" name="question[<?php echo $id ?>]" id="php<?=$answerId2?>" value="<?php echo $answer2 ?>" />
        <label for="php<?=$answerId2?>">
            <?php echo $answer2 ?>
        </label>
    </li>
    <li>
        <input type="radio" name="question[<?php echo $id ?>]" id="php<?=$answerId3?>" value="<?php echo $answer3 ?>" />
        <label for="php<?=$answerId3?>">
            <?php echo $answer3 ?>
        </label>
    </li>
    <li>
        <input type="radio" name="question[<?php echo $id ?>]" id="php<?=$answerId4?>" value="<?php echo $answer4 ?>" />
        <label for="php<?=$answerId4?>">
            <?php echo $answer4 ?>
        </label>
    </li>
</ol>

P.S 我还注意到您在所有无线电输入上使用相同的id属性。它不是有效的HTML,因为元素ID should be unique

P.S2 此外,您手动打印列表中的每个问题的方法看起来并不实用。我会尝试这样的事情:

<ol>
   <?php foreach($answers as $answer): ?>
   <li>
      <label>
          <input type="radio" 
                 name="question[<?=$id ?>]" 
                 value="<?=$answer?>" />
          <?=$answer?>
      </label>
   </li>
   <?php endforeach; ?>
</ol>

答案 1 :(得分:0)

试试这段代码:

<h3><?=$question?></h3>
<ol>
    <li>
        <label>
            <input type="radio" name="question[<?=$id?>]" value="<?=$answer1?>" />
            <?=$answer1?>             
        </label>
    </li>
    <li>
        <label>
            <input type="radio" name="question[<?=$id?>]" value="<?=$answer2?>" />
            <?=$answer2?>
        </label>
    </li>
    <li>
        <label>
            <input type="radio" name="question[<?=$id?>]" value="<?=$answer3?>" />
            <?=$answer3?>
        </label>
    </li>
    <li>
        <label>
            <input type="radio" name="question[<?=$id?>]" value="<?=$answer4?>" />
            <?=$answer4?>
        </label>
    </li>
</ol>

代码问题:

  • 您无法重复id="php",因为id必须是唯一的!
  • 如果您只是因为id的{​​{1}}而添加了label,那么您可以删除它们,只需将for放在input内}}。
  • 考虑使用label快捷语法:echo代替<?=$id?>