1

我正在尝试使用 jquery 创建具有动态 id 的 mcq 问题。但是当我为每个问题的选项定义一个唯一的 id 时,我被卡住了。有人可以帮我找到为每个 mcq 选项创建唯一 ID 的方法吗?下面是我的jQuery

<html>
<head>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
</head>

<body>
<script type="text/javascript">

$(document).ready(function(){
var counter = 2;//question

$("#addQuestion").click(function () {

var newTextBoxDiv = $(document.createElement('div'))
     .attr("id", 'TextBoxDiv' + counter);

newTextBoxDiv.after().html('<label>Q'+ counter + ' : </label>' +
      '<input type="text" name="textbox' + counter + 
      '" id="textbox' + counter + '" value="" >' + '</br>' + 
      '<label>A. </label>'+
      '<input type="text" id="Q'+counter+'choice1">' +
      '<input type="button" value="Add Option" id="'+ counter + '">');

newTextBoxDiv.appendTo("#TextBoxesGroup");


counter++;
 });

 $("#removeQuestion").click(function () {
if(counter==1){
      alert("No question that can be deleted");
      return false;
   }   

counter--;

    $("#TextBoxDiv" + counter).remove();

 });

 //$("#getButtonValue").click(function () {

// var msg = '';
//for(i=1; i<counter; i++){
 // msg += "\n Textbox #" + i + " : " + $('#textbox' + i).val();
//}
//      alert(msg);
 //});
});
</script>
</head><body>

这是html

<div id='TextBoxesGroup'>
<div id="TextBoxDiv1">
    <label>Q1 : </label><input type='textbox' id='textbox1' ></br>
    <label>A. <input type='text' id='Q1choice1'>
    <input type='button' value='Add Option' id='1'>
</div>
</div>
<input type='button' value='Add Question' id='addQuestion'>
<input type='button' value='Remove Question' id='removeQuestion'>

</body>
</html>
4

3 回答 3

1

您必须在 document.ready 之前定义 var 计数器

Does not work: 
$(document).ready(function () {
        var counter = 2;//question



  Works:
var counter = 2;//question
$(document).ready(function () {

编辑:计数器是唯一的全局定义在 $(document).ready

于 2013-11-14T08:25:36.963 回答
0

尝试在您的代码中附加 newTextBoxDiv:

   .... var newTextBoxDiv = $(document.createElement('div'))...
         .attr("id", 'TextBoxDiv' + counter);
    $('body').append(newTextBoxDiv);
  ...  newTextBoxDiv.after().html('<label>Q'....

$('body').append(newTextBoxDiv);

于 2013-11-14T08:24:20.760 回答
0

尝试这样的事情

  var counter = $("#TextBoxesGroup div").length;
于 2013-11-14T08:27:09.940 回答