0

私はこのフォーム(テスト)クリエーターに取り組んでおり、フォーム要素を含むdivがjQueryを使用して複製され、さらに質問が作成されます。元のdivは非表示になっています。各divには、onClick="javascript:$(this).parent().empty().remove();"アタッチされたボタンもあります。私の問題は、クラスにquestion存在するdivの数を確認し、その番号を'question'に追加し、question1(またはquestion2、question3など)を複製されたdivのIDとして設定することにより、divにquestion1、question2などの番号が付けられることです。元のdivは非表示になっているため、そのクラスのdivの数を+1する必要はありません。しかし、divが削除されると、番号付けが台無しになります。例:
1。Divが追加されます。
2. Divは質問1(id = question1)と呼ば
れます。3。別のdivが追加されます。
4. Divは質問2(id = question2)と呼ばれます
5.最初のDivが削除されます。
6.別のdivが追加されます。
7.新しいdivはQuestion2(id = question2)と呼ばれます
。8。2番目のdivが削除されていないため、Question 2(id = question2)はすでに存在します。そのうちの1つが削除されたときに、divの番号を付け直す必要があります。divのクローンを作成するためのコードは次のとおりです。

function copyAppendQ() {
  question = document.getElementById("question");
  clone=question.cloneNode(true);
  numberOfQuestions = $('.question').length;
  id = "questioncon"+(numberOfQuestions);
  clone.id=id;
  question.parentNode.appendChild(clone);
  inid= "question"+(numberOfQuestions);
  optionid= "optionsdiv"+(numberOfQuestions);
  $('#'+id+' '+'.'+'questionin').attr('id', inid);
  $('#'+id+' '+'.'+'options').attr('id', optionid);
 $('#' + id + ' h2').html( 'Question ' + numberOfQuestions );
}

およびdiv(このdivは非表示ですが、別のIDで複製されdisplay:none、上記の関数が呼び出されたときに元のdivに設定されたプロパティが削除されます)

<div id="question" class="question">
                <h2></h2>
                <input id="questionin" class="questionin" style="width:341px;" ><input type="button" id="remq" onClick="javascript:$(this).parent().empty().remove();" style="background-color:#E12E1E;border:0;width:120px;color:#fff;" value="Remove Question">
                <h3>Options</h3>
                <div class="options">
                <label>a.</label><input class="option optiona"><input onClick="setAnswer(this.parentNode.id, this.className)" type="radio" class="a" name="answer">&nbsp;
                <label>b.</label><input class="option optionb"><input onClick="setAnswer(this.parentNode.id, this.className)" type="radio" class="b" name="answer">
                <div class="clear"></div>
                <label>c.</label><input class="option optionc"><input onClick="setAnswer(this.parentNode.id, this.className)" type="radio" class="c" name="answer">&nbsp;
                <label>d.</label><input class="option optiond"><input onClick="setAnswer(this.parentNode.id, this.className)" type="radio" class="d" name="answer">
                </div>  
                </div>  

これはここでライブで見ることができます:http://bit.ly/R8hB2m

4

1 に答える 1

2

copyAppendQ次のコマンドで関数を開始します。

copyAppendQ.id = (copyAppendQ.id || 0)+1;

次に、IDを割り当てる場合:

id = "questioncon"+copyAppendQ.id;

これにより、質問が削除された場合でも、同じIDが2回取得されることはありません。

于 2012-10-07T22:25:11.327 に答える