2014-12-27 120 views
0

我目前有一个文件在玉,我试图做一个表单,如果用户在填写问题的答案后单击提交按钮,然后它运行JavaScript函数。但是,出于某种原因,由于某些原因无法在文件中找到该函数。玉按钮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

与上面的人的帮助下固定它 - 即使别人说它没有足够的具体的帮助,这对我来说已经足够了:)

以下是你将如何解决这个问题。由于它在“块”之外简单地将脚本移动到块中,现在它将从Jade编译成HTML。就个人而言,我也感动的JS到不同的文件,而不是描述就在玉文件中的函数我把它用线再次

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

由于移动到另一个JS并已将其列入玉文件的帮助!

0

你需要把一些脚本块为它在生成的HTML文件中插入内

+0

即使它可能是一个答案的正确思想,它根本没有帮助。 “一些块”并没有帮助。您应该添加更多信息。否则,您的答案可能确实被删除。 – Joeytje50 2014-12-27 21:10:33

+0

我认为OP已阅读[this](http://jade-lang.com/reference/extends/)。他知道一个块是什么。而且我清楚地指出,是的,他需要将他的脚本标记放置在某个“块”中,就像他的“内容”块一样,因为它包含在生成的html文件中。我也假设他知道,为了能够注册一个函数作为一个事件处理程序,它需要事先在页面中声明,这不是他写它的方式。我认为这很有帮助。要比纠缠这个狗屎更好,而不是发布一个更好的狗屎。 – spelufo 2014-12-27 21:55:16