Как я могу передать объект в функцию в innerHTML (JavaScript)? - PullRequest
0 голосов
/ 12 октября 2011

Как я могу передать объект в функцию в 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");
}

Как я могу передать этот объект, координаты?На данный момент это единственный мой выход, вместо объекта передаетсяordin.x иordin.y.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 12 октября 2011

Самый простой способ - создать изображение, прикрепить обработчик события и вставить элемент, используя методы 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 голос
/ 12 октября 2011

Вы можете использовать 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);
1 голос
/ 12 октября 2011

То, как вы сейчас это реализуете, да - вы создаете HTML как строку и встраиваете JavaScript в эту строку;ваши возможности ограничены.

И, черт возьми, используйте одинарные кавычки вокруг html var, чтобы вам не пришлось избегать всего: (

...