2012-06-18 44 views
0

我有一個畫面是在事件的onload設置:問題得到元素

function hideMe() { 

     document.getElementById("navy1").style.display = "none"; 
    } 

和我還有一個功能設置屏幕上的畫面:

function setUpPicture() { 

     subRunnerOBJ = new Object(); 
     subRunnerOBJ.topPos = 100; 
     subRunnerOBJ.leftPos = 0; 
     subRunnerOBJ.velX = 400; 
     subRunnerOBJ.velY = 0; 
     subRunnerOBJ.score = 0; 



     snImgObj = document.getElementById("navy1"); 

//在這一點上即時得到的問題「Microsoft JScript運行時錯誤:無法獲取屬性的值'style':object is null or undefined」

 snImgObj.style.left = subRunnerOBJ.leftPos + "px"; 
     snImgObj.style.top = subRunnerOBJ.topPos + "px"; 
     snImgObj.style.position = "absolute"; 
     snImgObj.style.display = "show"; 

     startMovePicture(); 

任何想法爲什麼這個happan?

//this one will set the the pictue on the right side of the screen 
    function setUpPicture() { 

     subRunnerOBJ = new Object(); 
     subRunnerOBJ.topPos = 100; 
     subRunnerOBJ.leftPos = 0; 
     subRunnerOBJ.velX = 400; 
     subRunnerOBJ.velY = 0; 
     subRunnerOBJ.score = 0; 


     //document.getElementById("navy1").style.display = "show"; 
     snImgObj = document.getElementById("navy1"); 
     snImgObj.style.left = subRunnerOBJ.leftPos + "px"; 
     snImgObj.style.top = subRunnerOBJ.topPos + "px"; 
     snImgObj.style.position = "absolute"; 
     snImgObj.style.display = "show"; 
     //once we place the location of the sub , we will Call to new function that will move it 
     startMovePicture(); 



    } 
    function startMovePicture() { 

     dt = 50; // in miliseconds 
     h = setInterval("moveObj(subRunnerOBJ)", dt); 

    } 


    function moveObj(someObj) { 
     counter = 0; 



     while (counter < 3000) { 

      subRunnerOBJ.leftPos = subRunnerOBJ.leftPos + subRunnerOBJ.velX * dt/1000; 
      subRunnerOBJ.topPos = subRunnerOBJ.topPos + subRunnerOBJ.velY * dt/1000; 

      snImgObj.style.left = subRunnerOBJ.leftPos + "px"; 
      snImgObj.style.top = subRunnerOBJ.topPos + "px"; 

      counter = counter + 50; 

      if (counter == 3000) { 

       stopRunning() 

      } 

     } 

    } 

    function stopRunning() { 

     clearInterval(h); 
     hideMe(); 
    } 

    //this function will hide the pucture on liad , and once the loop with the Pictue Running will end 
    //once loading the page we will not see the Picture 
    function hideMe() { 

     document.getElementById("navy1").style.display = "none"; 
    } 



    } 
+1

is this [tag:java] or [tag:javascript]? – secretformula

+0

向我們展示完整的代碼,在這裏是不可能的。 – gdoron

+0

檢查完整的代碼 –

回答

0

的問題是,snImgObj不獲取設置爲一個元素setUpPicture()。仔細檢查你的HTML。

1

Unable to get value of the property 'style': object is null or undefined"

這意味着,你正在努力,而對象實際上是一個nullundefined值使用對象的屬性。在你的情況下,snImgObjnull

這是因爲下面的代碼是無法找到ID爲「navy1」的元素

snImgObj = document.getElementById("navy1"); // snImgObj is NULL in your case 

可以有許多原因:

  1. 你的元素根本不存在。
  2. 您忘記了設置ID或拼錯了ID聲明。
  3. 您在之後創建元素試圖通過id獲取它。
  4. 您的元素存在,但尚未完成加載。
  5. ...等

如果您打算使用getElementById創建一個元素,你應該用下面的辦法來代替:

var element = document.createElement('div'); // creates a dangling DOM node 
someOtherElement.appendChild(element); // appends it to another element 

看來,舊版本的Internet Explorer不允許以這種方式創建圖像,但您可以通過read this answer瞭解如何以跨瀏覽器的方式完成圖像。

此外

  1. 的CSS屬性display不明白 「秀」。您可能希望將其設置爲「阻止」。顯示屬性請參見documentation

    snImgObj.style.display = "block"; // this is valid 
    
  2. 聲明變量時總是使用var您正在污染全球範圍。

  3. 不要傳遞字符串到setInterval,它accepts functions
  4. 使用JSLint驗證您的代碼。它會告訴你你的大部分問題在哪裏。這很值得!