0

これが私のコードです:

コンストラクター関数:

 function Box (//parameters) {  
  // code for constructor function  
  }

新しいオブジェクトを作成するための値を取得する場所は次のとおりです。

  function getBoxValues() {
   //code to get values

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

ボックスをページに追加する場所は次のとおりです。

function addBox(newbox) {  
   for (var i = 0; i < newbox.number; i++) {                                 
   var scene = document.getElementById("scene");              
   var div = document.createElement("div"); 
   div.className += " " + "box"; 
   div.innerHTML += newbox.name; 
   div.style.backgroundColor = newbox.color; 
   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);                           
    } 
   return div;                        
  }

  display();

  function display(div) {
  div.innerHTML += "alert";
  console.log("alert");
  }

私の問題は、オブジェクトの innerHTML に書き込むことができるように、div の値を表示関数に渡そうとしていることです。div が定義されていないというメッセージがコンソールに表示され続けます。これはおそらくスコープの問題だと思いますが、それを理解するのに苦労しています。

4

2 に答える 2

1

あなたの問題はここにあります:

display(); // <-- you call it with no argument

function display(div) {  // <-- there is 'div'
div.innerHTML += "alert"; // <-- undefined error
console.log("alert");
}
于 2013-01-16T21:32:34.333 に答える
1

もちろん、それは未定義display()です;)

関数呼び出しに適切な引数を渡すと、すべて正常に動作します。

于 2013-01-16T21:32:26.363 に答える