2012-06-18 4 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 »: объект имеет значение null или undefined»

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

     startMovePicture(); 

любая идея, почему это случилось?

//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

это [тег: Java] или [тег: JavaScript]? – secretformula

+0

Покажите нам полный код, что-то здесь невозможно. – gdoron

+0

Проверить полный код –

ответ

0

Проблема заключается в том, что snImgObj не получает установлен элемент в setUpPicture(). Дважды проверьте свой HTML.

1

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

Это означает, что вы пытаетесь использовать свойство объекта, а этот объект на самом деле значение null или undefined. В вашем случае snImgObj - null.

Это происходит потому, что следующий код не может найти элемент с идентификатором «navy1»

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

Там может быть много причин для этого:

  1. Ваш элемент просто не существует.
  2. Вы забыли установить идентификатор 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 свойство не понимает "шоу". Вероятно, вы захотите установить вместо этого «block». См. documentation для свойства отображения.

    snImgObj.style.display = "block"; // this is valid 
    
  2. Всегда используйте var при объявлении переменных! Вы загрязняете глобальный охват.

  3. Не передавайте строку setInterval, она accepts functions.
  4. Использование JSLint для проверки кода. Он расскажет вам, где большинство ваших проблем. Это стоит того!
Смежные вопросы