2017-09-16 42 views
0

我有填充多个按钮的功能,每一个都有自己的onclick功能:“未捕获的SyntaxError:意外的标记}”尝试访问功能时

$("#event_list").append(
      "<button type='button' onClick='showInfo("+i+",'"+name+"')'> Event:<br>"+events_arr[i][2]+"<br> Organizer:<br>"+events_arr[i][1]+"</button>" 
     ); 

功能showInfo在文件中其他位置定义(我是一个数字,名称是一个字符串)

function showInfo(i, name) 
{ 
    console.log("showInfo works"); 
    //makeTable12(i, name); 
    //makeTable24(i); 
} 

每当我点击这些按钮,镀铬抛出一个Uncaught SyntaxError: Unexpected token } 我想不通为什么它做到这一点。任何和所有的帮助表示赞赏!

+0

创建一个小提琴和你的问题链接到它 – gefei

+0

我强烈推荐像eslint这样的静态代码分析器来帮助发现和诊断这些问题。特别是如果你为你的IDE使用插件! –

回答

1

既然你包裹onclick内容用单引号'你应该换用双引号函数的参数(但请注意,您应该逃避他们):

onClick='showInfo("+i+",\""+name+"\")' 

检查下面的代码片段:

i = 0; 
 
name = 'test'; 
 
events_arr = [['', '', '']]; 
 
$("#event_list").append(
 
    "<button type='button' onClick='showInfo("+i+",\""+name+"\")'> Event:<br>"+events_arr[i][2]+"<br> Organizer:<br>"+events_arr[i][1]+"</button>" 
 
); 
 

 
function showInfo(i, name) 
 
{ 
 
    console.log("showInfo works"); 
 
    //makeTable12(i, name); 
 
    //makeTable24(i); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="event_list"></div>

+0

这有效!非常感谢。 – pyro97

+1

很好的答案。此外,如果在ES6中工作,则可以使用模板文字语法来使可变插值更容易一些,如下所示: 'const myHtml = \' \';' –

+0

@DuncanThacker我实际上会将'onclick'改为'$(...)。click(func)'以避免出现这样的问题:)成为第一个我会改变的... – Dekel

相关问题