2014-12-27 2 views
0

В настоящее время у меня есть файл в jade, и я пытаюсь создать форму, где, если пользователь нажимает кнопку отправки после заполнения вопроса, тогда он запускает функцию JavaScript. Однако по какой-то причине он не может найти функцию в файле по какой-либо причине.Jade button onClick не работает

Ниже мой Джейд код:

script(language='JavaScript'). 
    function checkAnswer() { 
    var answer = document.getElementById('sessionID').value.toLowerCase(); 
     if(answer == '4') { 
     console.log('Correct!'); 
     } 
     else { 
     console.log('Sorry, try again!'); 
     } 
    } 

extends ../layout 

block content 
    .page-header 
    h3 Challenge #1 
    p 2 + 2 = ? 
    input(type='text', name='sessionID', value=valueID) 
    input(type='button', value='Submit', onclick='checkAnswer()') 

Это возвращает код ошибки:

Uncaught ReferenceError: checkAnswer is not defined 

Что я делаю неправильно? Это должно быть что-то действительно глупое :(

ответ

1

Fixed его с помощью человека выше. - даже если другие говорят, это было недостаточно, чтобы помочь, это было достаточно для меня :)

Вот как вы это исправите. Поскольку его за пределами «блока» просто переместить скрипт в блок, он теперь будет скомпилирован в HTML из Jade. Лично я также переместил JS в другой файл и вместо описания функции прямо в файле нефрита я переместил его в другой JS и включил его в файл нефрита с линией

script(type='text/javascript' src='answers.js') 

Еще раз спасибо за помощь !

0

Вам нужно поместить скрипт внутри некоторого блока для того, чтобы быть вставленным в результате HTML файл

+0

Даже если это может быть правильная мысль о ответе, это совсем не полезно. «какой-то блок» не помогает. Вы должны просто добавить немного больше информации. В противном случае ваш ответ действительно может быть удален. – Joeytje50

+0

Я предполагаю, что ОП прочитал [это] (http://jade-lang.com/reference/extends/). Он знает, что такое блок. И я ясно заявляю, что да, ему нужно поместить свой скриптовый тег внутри некоторого «блока», как и его блок «content», чтобы он включался в полученный html-файл. Я также предположил, что он знает, что для регистрации функции в качестве обработчика события ее необходимо заранее объявить на странице, что не так, как он ее пишет. Я думал, что это полезно. Лучше, чем приставать к этому дерьму, вместо того чтобы опубликовать его лучше. – spelufo