2011-08-05 40 views
0

文字列変数をメソッドRequirementPopupに渡す際にいくつか問題があります。このメソッドは、id、typeId、objTypeの3つの引数を期待しています(オブジェクトの型は、例えば "Item"となります)。[object HTMLImageElement]が表示されるのはなぜですか?

3つの変数が渡されている他のメソッドを実行するボタンです。

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> 

} 
渡された私たちの変数を表示すると仮定

第二の方法:のdiv idとTIDでは

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


} 

は、私は右の変数を取得していますが、OTYPEに、私は[オブジェクトHTMLImageElement]ではなく、取得していますが"項目"?

PS私は、アラートに例えばのEditForm方法でOBJTYPEを表示すると、それは正しいですが、私はRequirementPopupメソッドに渡したときに、私はのようなものを取得しています[オブジェクトHTMLImageElement]

それは、なぜ誰も私を言うことができます起こって、その問題を解決する方法?

答えて

0

EditFormで生成しているJavaScript式のid、typeId、およびobjTypeの値を引用符で囲んでいるわけではありません。 idとtypeIdが数値である場合、これらの数値はRequirementPopupを数値として呼び出すJavaScript式で解釈されるため、期待どおりに出力されます。しかし、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>'; 
} 
関連する問題