Почему я получаю [объект HTMLImageElement]? - PullRequest
0 голосов
/ 05 августа 2011

У меня проблемы с передачей строковой переменной в метод RequirementPopup. Этот метод ожидает три аргумента id, typeId и objType (тип объекта, например, «Item»)

Первый метод - это кнопка, которая выполняет другой метод, в котором передаются три переменные.

function EditForm(count, id, typeId, nr, objType, name, lat, lon) {
   /* Here is something else */
 <p><input type="button" id="edit-requirement" value="Edit requirement"    onclick="javascript:RequirementPopup('+id+','+typeId+','+objType+')"/></p>

}

Второй метод, который предполагает отображение наших переменных, которые были переданы:

function RequirementPopup(id, typeId, objType) {
 /* Here is something else */
                document.getElementById("id").value = id;
                document.getElementById("tid").value = typeId;
                document.getElementById("oType").value = objType;


}

В div id и tid я получаю правильные переменные, но в oType я получаю [объект HTMLImageElement] вместо "Item"?

P.S. Когда я отображаю objType в методе EditForm, например, в предупреждении, это правильно, но когда я передаю его методу RequirementPopup, я получаю что-то вроде [object HTMLImageElement]

Может кто-нибудь сказать мне, почему это происходит и как решить эту проблему?

1 Ответ

0 голосов
/ 05 августа 2011

Вы не ставите кавычки вокруг значений id, typeId и objType в выражении JavaScript, которое вы генерируете в EditForm.Если id и typeId являются числовыми значениями, то они получаются, как и ожидалось, поскольку эти числа интерпретируются в выражении JavaScript, которое вызывает RequirementPopup как числа.Но если objType является именем, подобным «Item», то выражение JavaScript, которое вызывает RequirementPopup, будет интерпретировать его как символ, а не строку, и аргумент, который передается в RequirementPopup, будет тем, что названо этим символом.

Попробуйте это:

function EditForm(count, id, typeId, nr, objType, name, lat, lon) {
   /* ... */
   var inputHtml =
      '<p><input type="button" id="edit-requirement" value="Edit requirement" onclick="' +
      'javascript:RequirementPopup(' + id + ',' + typeId +',' +
      "'" + objType + "'" +
      ')"/></p>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...