调用一个位于字符串内部的JavaScript函数,并将params与一个变量连接起来
Calling a JavaScript function, which is inside a string, and concatenating params with a variable?
有办法做到这一点吗?我下面的代码不起作用:
$("#template-1")
.find("span")
.html("<div id='dialog'><input type='file' onchange='LoadImage(this,"+
canvas +")' id='t1-1-img-header'/><canvas class='dialogCanvas'"+
"width='475' height='250' style='border: 1px solid #555; "+
"margin-top:10px'></canvas></div>");
在上面的代码中,我试图将"this"和一个在其他地方填充的变量传递给函数"LoadImage"。所有的东西都是动态创建的,并且都在这个长字符串中。
提前谢谢,如果这是一个非常愚蠢的问题,我很抱歉。
编辑:变量"canvas"是一个带有id名称的字符串我要去别的地方。它是画布元素的id
编辑2:很抱歉回复我自己的帖子,但我无法标记对我帮助最大的答案(由@Santiago Rebela提供),所以我在这里复制它。
onchange='LoadImage(this,'""+ canvas +"'")'
事实证明,通过对其进行转义,代码就起了作用。谢谢
canvas
是对HTMLCanvasElement
对象的引用
不能将对象引用存储在字符串中。然而,您总是可以存储一些有用的东西来检索对象,比如id
,但还有更好的解决方案。
您的主要问题是试图处理内联处理程序,这通常应该避免。
您可以使用jQuery解析HTML字符串,查询创建的DOM元素以查找元素,并将事件处理程序附加到它。
例如
var $myEl = $('<div><input type="text"></div>')
.find('input')
.on('change', function (e) {
console.log(this); //the input
console.log(canvas); //use the canvas variable (not declared in this example)
//if you want to access the canvas next to the input in your example
//you could do $(this).next('canvas');
});
$('#content').append($myEl); //append your element rather than setting innerHTML
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- 调用一个位于字符串内部的JavaScript函数,并将params与一个变量连接起来
- Javascript /剃刀请求.Params一个有潜在危险的请求.日志含义从客户端检测到QueryString值