我在将字符串变量传递给方法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]
的内容有人能告诉我它为什么会发生以及如何解决这个问题吗?
答案 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>';
}