1

ここにオブジェクトコンストラクター関数があります:

function Box (id, name, color, number, coordinates) {  
   this.id = id;
   this.name = name;
   this.color = color;
   this.number = number;
   this.coordinates = coordinates;

   this.add = function(howMany) {
   }
  }

ここに、ユーザーがラジオボタンで選択した数値(5、10、または15)を取得する関数の一部があります。

  function getBoxValues() {
   var nameInput = document.getElementById("name");  
   var name = nameInput.value; 

   var numbersArray = dataForm.elements.amount;
   for (var i = 0; i < numbersArray.length; i++) {
   if (numbersArray[i].checked) {
    number = numbersArray[i].value;

   if (name == null || name == "") {                    
     alert("Please enter a name for your box");
     return;
   }
   else {
    var newbox = new Box("id", name, color, number, "coordinates");  
    boxes.push(newbox);                                       
    addBox(newbox);                                           

   var data = document.getElementById("dataForm");               
    data.reset();
   }

後で、この関数を使用してページにボックスを追加します。

  function addBox(newbox) {                                   
   var scene = document.getElementById("scene");              
   var div = document.createElement("div");                   
   div.innerHTML += newbox.name; 
   var x = Math.floor(Math.random() * (scene.offsetWidth-101));
   var y = Math.floor(Math.random() * (scene.offsetHeight-101));
   div.style.left = x + "px";
   div.style.top = y + "px";                        
   scene.appendChild(div);
   newbox.add(number);   
   for (var i = 0; i < howMany; i++) {
   console.log("added"); 
    addBox(newbox);
    }                          
  }

私の問題は、ユーザーがラジオボタンで選択したのと同じ数のボックスをWebページに追加したいということです。これまでのところ、コンソールログには、「number」の値がループスルーされた回数の「added」が示されています。しかし、数値の値に対して新しいボックスが作成されるようにコードを変更する方法がわかりません。初心者ですので、ご迷惑をおかけしましたことをお詫び申し上げます。助けていただければ幸いです。

4

1 に答える 1

0
function addBoxes () {
    var i;

    for (i=0; i < number; i += 1) {
        // create box
        addBox(newBox);
    }
}
于 2013-01-15T00:26:32.583 に答える