如何将对象传递给innerHTML中的函数?
以下是一个例子:
function clickme()
{
var coord = {x:5, y:10};
testimageih(coord);
}
function testimageih(coord)
{
var html = "<img id=\"sam1\" border=\"0\" name=\"sam1\" src=\"sample.gif\" " +
"onLoad=\"ImageOnLoad(" + coord + ");\"></img>";
document.getElementById("content").innerHTML = html;
}
function ImageOnLoad(coord)
{
if (coord) alert("Success");
else alert("Fail");
}
我怎样才能传递这个对象,coord?这是我唯一的其他办法,目前正在传递coord.x和coord.y,而不是对象。
谢谢。
答案 0 :(得分:4)
最简单的方法是创建一个图像,附加事件处理程序并使用DOM方法插入元素。
function testimageih(coord)
{
var img = document.createElement('img');
img.id = 'sam1';
img.border = 0;
img.name = 'sam1';
img.src = 'sample.gif';
img.onload = function() {
ImageOnLoad(coord);
};
document.getElementById('content').appendChild(img);
}
请注意,这与您上面的代码有一点不同:它不会删除#content
中当前的任何元素。如果发生这种情况,您将不得不单独进行删除。
答案 1 :(得分:1)
现在实现它的方式,是的 - 您将HTML作为字符串创建,并在该字符串中嵌入JavaScript;你的选择有限。
和geez一样,在html
var周围使用单引号,这样你就不必逃避一切:(
答案 2 :(得分:1)
您可以使用document.createElement
代替innerHTML
。
// Create the element
var element = document.createElement('img');
element.setAttribute('border', 0);
element.setAttribute('name', 'sam1');
element.setAttribute('src', 'sample.gif');
// Attach onLoad handler to it (passing it the object)
element.onload = function() { ImageOnLoad(coord) };
// Replace the contents of your... div?
var content = document.getElementById("content")
content.innerHTML = '';
content.appendChild(element);