2013-04-28 50 views
0

所有,我想在jsp 頁面中使用javascript創建html obejct,但'alert(GameObject1.loginurl);'將提醒'未定義'。如何在jsp頁面中使用javascript創建html obejct

我在下面的代碼中發現了一些錯誤嗎? 看來'obj.appendChild'失敗了。但是爲什麼?

var obj; 
try { 
obj = document.createElement("object"); 
obj.id = "GameObject1"; 
obj.name = "JavaGameObject1"; 
obj.setAttribute("classid", "clsid:72E6F181-D1B0-4C22-B0D7-4A0740EEAEF5"); 
obj.width = 640; 
obj.height = 526; 

var loginurl = document.createElement("param"); 
loginurl.setAttribute("name", "loginurl"); 
loginurl.setAttribute("value", "xx.xx.xx.xx:8080"); 
obj.appendChild(loginurl); 

document.body.appendChild(obj); 

alert(GameObject1.loginurl); 
} catch (e) { 
alert("Exception:" + e.message); 
} 
+2

你期待從'GameObject1.loginurl'得到什麼? – Musa 2013-04-28 06:47:12

回答

0

根據您的代碼,GameObject1從未定義過。我想你想使用obj,因爲這是ID GameObject1的HTML對象。

但我會注意,即使obj.loginurl爲您創建一個名爲loginurl孩子HTML對象param,而不是一個屬性的HTML對象obj仍然是不確定的。 (即會需要你做obj.loginurl = "xx.xx.xx.xx:8080"來訪問它,你似乎想的方式)

爲了讓子元素param的價值,你會希望像obj.children[0].value將返回您loginurl您設置的值目的。或者,在您當前的範圍內,您可以撥打loginurl.value

當通過obj.children[#]訪問子元素時,最好檢查該位置的元素是否存在,以避免在任何地方拋出異常。

+0

謝謝,我可以通過GameObject1.children [#]獲得價值。 – samir 2013-04-28 07:05:15

0

要訪問loginurl,你可以使用

alert(obj.getElementsByTagName("param")[0]); 
alert(obj.getElementsByTagName("param")[0].name); 
alert(obj.getElementsByTagName("param")[0].value); 

訪問像你提到的方式是獲得的屬性,而不是子元素的正確方法。

GameObject1 // Will look for Object variable not the object with id "GameObject1" - You should use document.getElementById("GameObject1") 
GameObject1.loginurl // will look for attribute and not the child element 
+0

感謝您的幫助 – samir 2013-04-28 07:29:12