2011-08-05 78 views
0

我有一些问题将字符串变量传递给方法RequirementPopup。这个方法需要三个参数id,typeId和objType(例如一个对象的类型,例如它是“Item”)为什么我得到[对象HTMLImageElement]?

第一个方法其中是执行其他方法的按钮,其中传递了三个变量。

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],而不是“项目”?

PS当我EditForm方法警报显示OBJTYPE比如它是正确的,但是当我将它传递给RequirementPopup方法我越来越像[对象HTMLImageElement]

谁能告诉我,为什么它是发生和如何解决这个问题?

回答

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>'; 
} 
相关问题