2015-04-24 2 views
0

Я использую базовый html и javascript, и он не работает ни в одном из моих браузеров или других компьютеров. Я получаю TypeError: document.getElementById (...) имеет значение null.Невозможно отобразить ошибку JSON - TypeError: document.getElementById (...) is null

Это работает, когда я использую инструменты/консоль dev. Я не могу найти ничего плохого в том, что я пишу, поэтому я попробовал несколько разных способов, и все сбой с той же ошибкой.

<!doctyp html> 
 
<html> 
 
\t <head> 
 
\t \t <title>Simple JSON</title> \t \t 
 
     <script type="text/javascript"> 
 
      
 
      var info = { "Name":"My name", "Age":"My age", "links":{"PBS":"http://pbs.org", "Google":"http://google.com"}}; 
 
      
 
      var output = ""; 
 
      
 
      for (key in info.links){ 
 
       output += "<li><a href='"+info.links[key]+"'>"+key+"</a></li>"; 
 
      } 
 
      document.getElementById('links').innerHTML = output; 
 
     </script> 
 
\t </head> 
 
\t <body> 
 

 
\t <ul id="links"> 
 
\t \t 
 
\t </ul> 
 

 

 
\t </body> 
 
</html>

+0

я поменять сценарий выше с этим <типа скрипта = «текст/JavaScript»> вара людей = «{„FirstName“: «Ваше имя», «Еда»: «Курица», «ссылки»: {«PBS»: «http://pbs.org», «ссылки»: «http://awebpage.com»}}; var output = JSON.parse (человек); человек = ""; для (ключ в выходе.links) { человек + = "

  • "+key+"
  • "; } document.getElementById ('links'). InnerHTML = person; – Zapp

    +0

    Lol, вот и все, что было, и я думал, что мир заканчивается. Спасибо, парни. Застрял на этом в течение дня. – Zapp

    ответ

    2

    Проблема Ваш браузер в головном элементе и выполняются до фактических элементов в организме готовы. Положите его в событии, которое вызывается, когда содержание готово

    document.addEventListener("DOMContentLoaded", function(event) { 
        var info = { "Name":"My name", "Age":"My age", "links":{"PBS":"http://pbs.org", "Google":"http://google.com"}}; 
    
        var output = ""; 
    
        for (key in info.links){ 
         output += "<li><a href='"+info.links[key]+"'>"+key+"</a></li>"; 
        } 
        document.getElementById('links').innerHTML = output; 
    }); 
    
    1

    Ваш скрипт работает до завершения загрузки страницы, так что во время исполнения, ваш элемент с ID links оленьей кожей существовать еще. Переместите скрипт в нижней части страницы, и он должен работать нормально.

    <html> 
    
    
    <head> 
        <title>Simple JSON</title>  
    </head> 
        <body> 
         <ul id="links"> 
    
         </ul> 
    
         <script type="text/javascript"> 
    
          var info = { "Name":"My name", "Age":"My age", "links":{"PBS":"http://pbs.org", "Google":"http://google.com"}}; 
    
          var output = ""; 
    
          for (key in info.links){ 
           output += "<li><a href='"+info.links[key]+"'>"+key+"</a></li>"; 
          } 
          document.getElementById('links').innerHTML = output; 
         </script> 
        </body> 
    </html> 
    
    1

    Попробуйте положить свой тег <script> в нижней части корпуса. Причина, по которой вы получаете ошибку null, состоит в том, что в то время, когда ваш код javascript выполняет тег <ul>, еще не был инициализирован.

    1

    HTML - это интерпретируемый язык. Вы должны поместить свой код JavaScript после закрытия <ul> разметки или в более общем плане, прежде чем </body>

    Смежные вопросы