Dynamin创建链接传递对象作为参数
问题描述:
我已创建动态<a />
标记与onclick事件和此事件调用一个函数,其中包含一个对象作为参数,我通过,但onclick链接上发生错误SyntaxError:预期的表达式,脚本结束了Dynamin创建链接传递对象作为参数
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/css/bootstrap-dialog.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/js/bootstrap-dialog.min.js"></script>
<script>
function callconfirm(cb,pmessage)
{
// var isConfirmed
BootstrapDialog.confirm({
title: 'WARNING',
message: pmessage,
type: BootstrapDialog.TYPE_WARNING, // <-- Default value is BootstrapDialog.TYPE_PRIMARY
closable: false, // <-- Default value is false
draggable: false, // <-- Default value is false
btnCancelLabel: 'Do not drop it!', // <-- Default value is 'Cancel',
btnOKLabel: 'Drop it!', // <-- Default value is 'OK',
btnOKClass: 'btn-warning', // <-- If you didn't specify it, dialog type will be used,
callback:cb /*function(result) {
// result will be true if button was click, while it will be false if users close the dialog directly.
if(result) {
return true;
}else {
return false;
}
}*/
});
}
function b1checkConfirm(result,id)
{
//callconfirm();
console.log("B1 click and result is "+result);
console.log(this.p1);
console.log(this.p2);
}
</script>
</head>
<body>
<script type="text/javascript">
document.write('<a href="javascript:void(0)" onClick="javascript:callconfirm(b1checkConfirm.bind({p1: Hello, p2:World}),"Hello")" >Click</a>');
</script>
</body>
答
你的问题是文件撰写的这一部分:
b1checkConfirm.bind({p1: Hello, p2:World}),"Hello"
的你好和世界必须逃出来的,因为他们的部分您可以编写HTML:
b1checkConfirm.bind({p1: 'Hello', p2: 'World'}),'Hello'
片段:
function callconfirm(cb,pmessage)
{
// var isConfirmed
BootstrapDialog.confirm({
title: 'WARNING',
message: pmessage,
type: BootstrapDialog.TYPE_WARNING, // <-- Default value is BootstrapDialog.TYPE_PRIMARY
closable: false, // <-- Default value is false
draggable: false, // <-- Default value is false
btnCancelLabel: 'Do not drop it!', // <-- Default value is 'Cancel',
btnOKLabel: 'Drop it!', // <-- Default value is 'OK',
btnOKClass: 'btn-warning', // <-- If you didn't specify it, dialog type will be used,
callback:cb /*function(result) {
// result will be true if button was click, while it will be false if users close the dialog directly.
if(result) {
return true;
}else {
return false;
}
}*/
});
}
function b1checkConfirm(result,id)
{
//callconfirm();
console.log("B1 click and result is "+result);
console.log(this.p1);
console.log(this.p2);
}
document.write('<a href="javascript:void(0)" onClick="javascript:callconfirm(b1checkConfirm.bind({p1: 'Hello', p2: 'World'}),'Hello')" >Click</a>')
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/css/bootstrap-dialog.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.34.7/js/bootstrap-dialog.min.js"></script>
答
你需要逃避你"
:
<script type="text/javascript">
document.write('<a href="javascript:void(0)" onClick="javascript:callconfirm(b1checkConfirm.bind({p1: Hello, p2:World}),\"Hello\")" >Click</a>');
</script>
因为代码会认为第二杉杉后onClick事件结束你打招呼的牛逼"
您真正需要使用'\'''因为将document.write'剥去'\”'和代码将回同样的问题'onclick'即将结束。 – bobjoe
这可能有效。让我们让OP尝试一下, – Nicolas