为什么我得到[对象HTMLImageElement]?

时间:2011-08-05 19:28:54

标签: variables object

我在将字符串变量传递给方法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中我得到 [object HTMLImageElement] 而不是“Item”?

P.S当我在EditForm方法中显示objType时,例如在alert中它是正确的但是当我将它传递给RequirementPopup方法时,我得到类似 [object HTMLImageElement]

的内容

有人能告诉我它为什么会发生以及如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您没有在您在EditForm中生成的JavaScript表达式中的id,typeId和objType值周围添加任何引号。如果id和typeId碰巧是数值,那么它们会按预期出现,因为这些数字在JavaScript表达式中被解释,该表达式将RequirementPopup称为数字。但是如果objType是一个名为“Item”的名称,那么调用RequirementPopup的JavaScript表达式将把它解释为符号而不是字符串,并且传递给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>';
}