Javascript语法错误

Javascript语法错误,javascript,syntax-error,Javascript,Syntax Error,上面的代码生成tds onclick事件侦听器。生成的代码如下所示 var dayNumberCell = doc.createElement('td'); dayNumberCell.className = 'days_link'; dayNumberCell.setAttribute('onclick', function(scope) { var bindScope = function

上面的代码生成tds onclick事件侦听器。生成的代码如下所示

var dayNumberCell = doc.createElement('td');
  dayNumberCell.className = 'days_link';
      dayNumberCell.setAttribute('onclick', function(scope) {
                                            var bindScope = function()    {
                                                scope.changeDate(this, this.id);
                                                scope.returnDate(scope.month, scope.year);
                                            };
                                            return bindScope;
                              }(this));
15
通过单击TD,我得到语法错误消息。 如何编写指定代码执行且没有语法错误的函数


提前感谢。

您将函数定义放入字符串文本中。它需要代码,它只有文本。

您应该按照如下方式重写onclick处理程序:

    <td class="days_link" onclick="function () {
    scope.changeDate(this, this.id);
    scope.returnDate(scope.month, scope.year);
}">15</td>
我不明白为什么要尝试从外部js文件设置内联单击处理程序。您采取了正确的步骤从html中删除内联单击处理程序,但是当您从外部脚本设置单击处理程序时,不应该设置onclick属性

除了我突出显示的方式外,还可以使用w3c和microsoft事件处理程序,以便将多个onclick事件附加到同一元素。然而,这是一种更复杂的方法,因为不同的浏览器处理它的方式不同。只要您不打算将其他onclick处理程序附加到同一单元格,这就足够了。

15
dayNumberCell.onclick = function(e) {
   var target = e.target || e.srcElement;
   target.changeDate(target, target.id);
   target.returnDate(target.month, target.year);

   return false;
};
你试过功能以外的吗

    <td class="days_link" onclick="function () {
    scope.changeDate(this, this.id);
    scope.returnDate(scope.month, scope.year);}">15</td>
15

如果这不起作用,请在您的javascript文件上尝试它,是的,还有一个函数。

也许您不希望使用任何javascript库,但我强烈建议使用YUI事件实用程序来实现这一点。 达斯汀·迪亚兹(Dustin Diaz)有一篇很棒的文章,解释了它将如何为您简化这一过程

    <td class="days_link" onclick="scope.changeDate(this, this.id);scope.returnDate(scope.month, scope.year);">15</td>