这似乎可以在75%的时间内工作,并且模态函数可以使用可用的参数执行,但是表中的每个按钮我都会得到一个Uncaught SyntaxError:Unexpected identifier。这与inproper关闭有关吗?我的谷歌搜索作为一个潜在问题登陆,但我无法在此处实现任何解决方案。
html += '<thead><th>Question</th><th>Answer 1</th><th>Answer 2</th><th>Answer 3</th><th>Answer 4</th></thead>';
for (var i = 0; i < questions.length; i++) {
question = questions[i].question;
questionTitle = question.q;
answer1title = question.a1;
answer2title = question.a2;
html += '<tr><td class="question"><b>'
+ question.q
+ '</b></td><td class="answer1">'
+ question.a1
+ '</td><td class="answer2">'
+ question.a2
+ '</td><td class="answer3">'
+ question.a3
+ '</td><td class="answer4">'
+ question.a4
+ '</td><td class="edit">'
+ '<button onclick="openQuestionModal(\''+questionTitle+'\', \''+answer1title+'\', \''+answer2title+'\')" class="btn btn-small btn-primary" id="questionEdit" type="button">Edit</button>'
+ '</td></tr>';
}
$('#questionsTable').append(html);
答案 0 :(得分:1)
问题是,questionTitle
,answer1title
或answer2title
中的任何一个都可能在其值中包含单引号,这会破坏您尝试的字符串连接。您需要使用转义单引号替换所有出现的单引号。所以像这样:
$(document).ready(function () {
var par = "I'm the problem";
var replacer = new RegExp("'", "g");
var new_btn = $('<button onclick="clicker(\'' + par.replace(replacer, "\\'") + '\');">ASDF</button>');
$("#main").append(new_btn);
});
function clicker(param) {
alert(param);
}
您必须将我的示例应用到您的实际代码中,但重点是使用replace
方法和replacer
正则表达式为您的每个变量在函数调用中连接。
有更好的方法可以将HTML附加到某个区域,尤其是在表格中。我建议用jQuery绑定事件,而不是内联。这是一个不同的主题,与你的问题无关,虽然它可能首先帮助避免它。
答案 1 :(得分:0)
可能是你应该在添加到onclick属性之前转义字符串:
+ '<button onclick="openQuestionModal(\''+ escape(questionTitle)+'\', \''+ escape(answer1title)+'\', \''+escape(answer2title)+'\')" class="btn btn-small btn-primary" id="questionEdit" type="button">Edit</button>'
并使用:
unescape('str_to_revert')// to get the data back inside your function.