2012-11-05 57 views
1

我有以下的JavaScript代码:的JavaScript不是Grails的/ GSP工作

<script type="text/javascript"><!-- 
​$(function() { 
    $('#add').click(function() { 
     $(this).before($('select:eq(0)').clone()); 
     if ($('select').length > 5) $(this).hide();   
    }); 
});​ 
//--> 
</script> 

下面是HTML代码:

<select name="dropdown"> 
    <option value="a">Apple</option> 
    <option value="b">Bee</option> 
    <option value="c">Cat</option> 
    <option value="d">Donkey</option> 
    <option value="e">Elephant</option> 
</select> 
<a href="#" id="add">Add</a> 

在的jsfiddle演示其工作正常,但其不工作我的gsp。任何想法或我错过了什么?每当我点击“添加”它只显示/#在我的网址。

我设法通过检查所述元素找出错误消息是如下: 未捕获的SyntaxError:意外令牌非法

Error Message 截图 Console error screenshot from Chrome

+0

正显示出任何错误,当您单击添加链接浏览器调试器? – BobS

+0

“未捕获的SyntaxError:意外的令牌非法”。我怀疑我在gsp上声明脚本的方式是错误的? “添加”无法指向我想要的脚本..但我不知道如何排除故障.. – user1790785

+0

GSP生成的代码在浏览器上的外观如何? (即使用“查看源代码”或您的浏览器的等效) – BobS

回答

0

<脚本中可能有一些非法字符>区块。

你从别的地方复制/粘贴过吗?我建议你把光标放在每行的开始和结尾,并删除所有字符,直到你确定没有不可见字符。

或者删除整个脚本块和手动重新输入该

+0

当我在jsfiddle演示上尝试它的时候,脚本和html都有效。我会尝试你的建议并回来。谢谢! – user1790785

+0

实际上,当我从jsfiddle复制到本地文件,我得到同样的错误,你正在得到。 – aldrin

+0

看起来像一些流浪的字符。我会在你的问题中发布一个截图。让我知道,如果这是你看到的。 – aldrin

0

尝试未注释版本(W/O <!--//-->):

<script type="text/javascript"> 
​$(function() { 
    $('#add').click(function() { 
    $(this).before($('select:eq(0)').clone()); 
    if ($('select').length > 5) $(this).hide();   
    }); 
});​ 
</script> 
+0

上有错误消息谢谢,但该脚本仍然无法正常工作..它仍然返回相同的页面,并在#中带#。 – user1790785

+0

如果将'console.log('add')'添加到函数中,Waht?顺便说一句,正如我所看到的,这段代码应该打开'#'(并且在打开之前隐藏按钮),不是吗? –

+0

只要用户点击添加,代码就应该/克隆相同的下拉列表。当我在.. – user1790785

0

如果你只是把JavaScript放到一个外部文件中,你可以避免这样的问题。

+0

中加入时,什么都不会发生?以及它将如何解决这个问题? – aldrin

+0

尽管我对GSP没有经验,但我认为HTML源代码中的所有内容都可能受到GSP引擎的重新解释。将JavaScript代码放在外部文件中可以降低GSP以某种方式损坏代码的风险;它应该直接提供.js文件(这是大多数Web框架的工作原理,无论如何)。 – BobS

+0

如果框架混淆了js,它将会执行它,而不管它的位置。但据我所知,Grails不会与js混淆。 – GalmWing