2016-06-04 3 views
0

Во-первых, я совершенно новичок в кодировании и использовал инструменты самообучения, чтобы изучать Javascript в свое свободное время. Я достаточно научился создавать собственные проекты. Моя первая попытка состоит в том, чтобы построить рандомизатор (в данном случае, названия ресторанов). Javascript работает через мои тесты в консоли, как и кнопки. Тем не менее, я не могу заставить работать .innerHTML работать, и я не уверен, что мне не хватает. Я сделал несколько поисков здесь, и ни одно из решений, которые я нашел, похоже, работает..innerHTML: Невозможно установить свойство «innerHTML» нулевого значения

Ошибка я получаю указана в названии и появляется в строке 29.

Вот Javascript:

var randomRestaurant = { 
    restaurantName: [], 
    findRestaurant: function() { 
    var restaurantName = Math.random(); 
    if (restaurantName < 0.20) { 
    this.restaurantName.push("China Taste"); 
    }      
    else if (restaurantName < 0.40) { 
    this.restaurantName.push("Pizza Johns"); 
    } 
    else if (restaurantName < 0.60) { 
    this.restaurantName.push("Liberatore's"); 
    } 
    else if (restaurantName < 0.80) { 
    this.restaurantName.push("Bill Bateman's"); 
    } 
    else { 
    this.restaurantName.push("R&R Taqueria"); 
    } 
}, 
    clearRestaurant: function() { 
    randomRestaurant.restaurantName.splice(0, 1); 
    } 
}; 

var randomRestaurantButton = document.getElementById('randomRestaurantName'); 
randomRestaurantButton.addEventListener('click', function() { 
    randomRestaurant.findRestaurant(); 
    document.getElementById("restaurantNameDisplay").innerHTML = randomRestaurant.restaurantName[0]; //<--line 29 
}); 

var randomRestaurantButton = document.getElementById('refreshRestaurant'); 
randomRestaurantButton.addEventListener('click', function() { 
    randomRestaurant.clearRestaurant(); 
    randomRestaurant.findRestaurant(); 
    document.getElementById("restaurantNameDisplay").innerHTML = randomRestaurant.restaurantName[0]; 
}); 

А вот мой HTML:

<!DOCTYPE html> 
<html> 

    <head> 
    <link rel="stylesheet" href="style.css"> 

    </head> 

    <body> 
    <div><h1>Random Restaurant!</h1> 

    <button id="randomRestaurantName">Click me for a random restaurant!</button> 
     </div> 
    <br> 

     <h2="restaurantNameDisplay"></h2="restaurantNameDisplay"> 

    <div> 
    <br> 
    <button id="refreshRestaurant">Nah. Give me another one.</button> 
    </div> 

    </body> 
    <script src="script.js"></script> 
</html> 

Спасибо за вашу помощь и, надеюсь, это не из-за чего-то глупого, как опечатка.

+0

, вероятно, ваш элемент h2 отсутствует атрибут id. –

ответ

2

Есть некоторые проблемы здесь.

  1. h2 тег идентификатор должен быть

    <h2 id="restaurantNameDisplay"></h2> 
    
  2. ваши кнопки расположены на одной и той же имя переменной, изменить второй по

    var refreshRestaurantButton = document.getElementById('refreshRestaurant'); 
        refreshRestaurantButton.addEventListener('click', function() { 
         randomRestaurant.clearRestaurant(); 
         randomRestaurant.findRestaurant(); 
         document.getElementById("restaurantNameDisplay").innerHTML = randomRestaurant.restaurantName[0]; 
        }); 
    
  3. Если это все еще не работает, вам должен вызывать ваш скрипт после события загрузки страницы. так вставить яваскрипт кода функции (например, "MyFunc()") и изменить HTML тела тег:

тело OnLoad = "MyFunc()">

+0

Спасибо! Я посмотрю и оценю помощь! – Riadan414

1

Скорее всего, эта линия должна быть <h2="restaurantNameDisplay"></h2="restaurantNameDisplay"> <h2 id="restaurantNameDisplay"></h2>

+0

Извлеченный урок: дважды проверьте и убедитесь, что все ваши теги правильно названы. :) Это всегда глупая ошибка со мной! Спасибо. :) – Riadan414

+0

не волнует, мы все это делаем. Также проверяем другой ответ, так как есть, вероятно, больше проблем с кодом. удачи! – apieceofbart