我从mysql数据库获取此数据并打印每一行并添加一个按钮。但逃避是一个重大问题。有没有办法轻松将其转换为DOM而不是打印内联html?
render : function(template,params){
var arr = [];
switch(template){
case 'loginTopBar':
arr = [
'<span><img src="',params.gravatar,'" width="23" height="23" />',
'<span class="name">',params.name,
'</span><a href="" class="logoutButton rounded">Logout</a></span>'];
break;
case 'chatLine':
arr = [
'<div class="chat chat-',params.id,' rounded"><span class="gravatar"><img src="',params.gravatar,
'" width="23" height="23" onload="this.style.visibility=\'visible\'" />','</span><span class="author">',params.author,
':</span><span class="text">"',params.text,'"</span><span class="time">',params.time,'</span></div>'];
break;
case 'user':
arr = [
'<div class="user" id="',params.text,'" title="',params.text,'"> <button type="button" value="',params.text,'" class="btn btn-success" onclick="ImageHosting_Click( \'',params.text,'\')"></button>',params.text,'',params.text,'</div>'
];
break;
case 'userz':
arr = [
'<div class="userz" title="',params.disp,'">',params.disp,'</div><br>'
];
break;
}
// A single array join is faster than
// multiple concatenations
return arr.join('');
},
答案 0 :(得分:0)
下面我已经为你翻过单引号,再次注意\''
这就是诀窍。但要注意还有其他逃避问题,例如f="shoe's"
等等。
这就是我建议首先创建DOM元素,并使用innerText等的原因。
var f= "hello";
var arr = ['<button type="button" onclick="ImageHosting_Click(\'',f,'\')">'];
console.log(arr.join(''));
答案 1 :(得分:0)
试试这个会对你有用
<button type="button" onclick="ImageHosting_Click(\'',f,\'')">