2010-07-27 157 views
0

我有javascript,這是在iframe中。當我檢查iframe中的單選按鈕時,在父窗口更改值。它工作完美的Firefox,但不是在IE瀏覽器...有人可以幫我解決這個問題嗎?iframe中的單選按鈕檢查

<script type="text/javascript"> 
function getCheckedValue(radioObj) { 
    if(!radioObj) 
     return ""; 
    var radioLength = radioObj.length; 
    if(radioLength == undefined) 
     if(radioObj.checked) 
      return radioObj.value; 
     else 
      return ""; 
    for(var i = 0; i < radioLength; i++) { 
     if(radioObj[i].checked) { 
      return radioObj[i].value; 
     } 
    } 
    return ""; 
} 

function asd(){ 
var qwer = getCheckedValue(document.forms['uas'].elements['icon']); 
window.parent.document.forms['register'].lang.value = qwer; 
window.parent.document.getElementById("images").getElementsByTagName("img")[0].src = "images/lang/" + qwer + ".png"; 

} 
</script> 

<form name="uas" method="GET" action="" onchange="asd();"> 
<label id="1"><input type="radio" name="icon" value="1">One</label><br><label id="2"><input type="radio" name="icon" value="2">Two ... 
+0

我看不出任何明顯的代碼問題。你在IE中遇到任何錯誤嗎? – 2010-07-27 09:59:16

+0

不,它只是不工作。 – simple 2010-07-27 10:05:08

回答

0

您的代碼的問題是附加到表單元素的onchange事件,IE不支持這一點。相反,你必須使用onchange事件爲每個單選按鈕:

<label id="1"><input type="radio" name="icon" value="1" onchange="asd();">One</label> 
<label id="2"><input type="radio" name="icon" value="2" onchange="asd();">Two</label> 

或者,你可以使用JavaScript來自動添加事件監聽器。

而且這條線:

window.parent.document.getElementById("images").getElementsByTagName("img")[0].src = "images/lang/" + qwer + ".png"; 

是不正確的,已經的getElementById返回你需要這樣的getElementById圖像( 「圖像」)SRC = ...會做的伎倆。

+0

我只是改變..onchange =「asd();」> ... onclick =「asd();」>也許這不是最好的解決方案,但它的工作。 :) – simple 2010-07-29 10:07:35