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 に答える