我可以不使用jquery为标签标签设置html吗?

时间:2016-09-18 20:19:27

标签: php jquery

我正在学习使用jquery和PHP编写测验应用程序,没有数据库。

我使用PHP来准备HTML文件的结构。然后使用jquery填充数据。

问题显示得很好。但选项的标签标签仍未定义。

脚本:

var questions = [
 {
 	
 	"statement": "The function <img src='images/1.png'>, where [x] denotes the greatest integer function, is defined for all x &straightepsilon;",
 	"ans1": "R",
 	"ans2": "R - {(-1, 1) U n: n &straightepsilon; I }",
 	"ans3": "R<sup>+</sup> - (0, 1)",
 	"ans4": "R - (n: n &straightepsilon; N)",
 }
];

$(document).ready(function() {
	var i = 0;
	var j  = 1;
	while (i < questions.length) {
		$("#question" + j).html('Q' + j + ". " + questions[i]["statement"]);
		// the labels //
		$("#question" + j + "-choice1").html(questions[i]["ans1"]);
		//console.log($("#question" + j + "-choice1").html());
		console.log(questions[i]["ans1"]);
		$("#question" + j + "-choice2").html(questions[i]["ans2"]);
		$("#question" + j + "-choice3").html(questions[i]["ans3"]);
		$("#question" + j + "-choice4").html(questions[i]["ans4"]);
		
		i++;
		j++;
	}
}); 

这是我用来创建标记的php脚本。

<?php

    $numQues = 30; // max number of questions.
    $i = 1;

    while ($i <= $numQues) {

        // careful with this string generator :) 
        echo '<div class="questions">
              <p id="question' . $i . '"'. '></p>'.
              '<input type="radio" name="ans' . $i .''. '><label id="question' . $i . '-choice1' .'"></label><br>'.
             '<input type="radio" name="ans'. $i . '><label id="question' . $i . '-choice2' . '"></label><br>'.
              '<input type="radio" name="ans'. $i . '><label id="question'. $i .'-choice3'.'"'.'></label><br>'.
              '<input type="radio" name="ans' . $i . '><label id="question'. $i .'-choice4'.'"'.'></label><br>'.
              '<button class="btn btn-primary pull-right" id="question-review'. $i . '"'. '>Mark for Review</button>
              </div>';

        $i++;

    }

?>

1 个答案:

答案 0 :(得分:2)

你错过了很多双引号字符。 E.g。

'<input type="radio" name="ans'. $i . '><label id="question' . $i . '-choice2' . '"></label><br>'.

应该是

'<input type="radio" name="ans'. $i . '"><label id="question' . $i . '-choice2' . '"></label><br>'.
                                       ^

因此,它将名称设置为"ans1><label id=",而不是将<label>识别为新标记。

您可以在双引号字符串中使用变量插值,而不是所有容易出错的串联:

    echo "<div class='questions'>
          <p id='question$i'></p>
          <input type='radio' name='ans$i'><label id='question$i-choice1'></label><br>
          <input type='radio' name='ans$i'><label id='question$i-choice2'></label><br>
          <input type='radio' name='ans$i'><label id='question$i-choice3'></label><br>
          <input type='radio' name='ans$i'><label id='question$i-choice4'></label><br>
          <button class='btn btn-primary pull-right' id='question-review$i'>Mark for Review</button>
          </div>";

我将HTML元素中的引号更改为单引号,因此我不需要转义它们。

另一种流行的方法是输出普通的HTML,然后在需要替换变量的地方使用<?php echo $variable ?>

    while ($i <= $numQues) {
      ?>
      <div class="questions">
      <p id="question<?php echo $i; ?>"></p>
      <input type="radio" name="ans<?php echo $i; ?>"><label id="question<?php echo $i; ?>-choice1"></label><br>
      <input type="radio" name="ans<?php echo $i; ?>"><label id="question<?php echo $i; ?>-choice2"></label><br>
      <input type="radio" name="ans<?php echo $i; ?>"><label id="question<?php echo $i; ?>-choice3"></label><br>
      <input type="radio" name="ans<?php echo $i; ?>"><label id="question<?php echo $i; ?>-choice4"></label><br>
      <button class="btn btn-primary pull-right" id="question-review<?php echo $i; ?>">Mark for Review</button>
      </div>
      <?
      $i++;
  }