0

以前も同じ質問をしました。ただし、CHROME ではまだエラーが発生しますが、IE では問題なく動作します。親 html はポップアップ ウィンドウとして mycoupon3.jsp を呼び出し、ポップアップ内の行の 1 つが選択されている場合、INNERHTML を親 html に送信します。

問題は、ポップアップからのデータが親 html に処理されないことです。chrome のデバッグ ツールで Uncaught TypeError: Cannot read property 'tot' of undefined on "opener.document.joinform.all["tot"].innerHTML" と表示されました。また、ポップアップはself.closeしません。

all["tot"] は chrome と互換性がないと思います。opener.document.joinform.getelementbyid["tot"].innerHTML に変更しましたが、うまくいきません。

ここにコードがあります。

<parent html>

 <td id="tot" class="text_orange"><%=NumberFormat.getInstance().format(cmbean.getTotal())%> USD</td>

 <a href="javascript: mycoupon()"><img src="/images/main/mycoupon_btn.gif" border="0"></a>


<script>

var new_window_handle;  

function mycoupon() {     
new_window_handle = window.open("my_coupon3.jsp?amt=<%=pay_price2%>", 'coupon_win', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes, resizable=no,width=780,height=540'); 
} 

</script>   

<my_coupon3.jsp> * POPUP window

<script>
function sel_coupon(c_id, amt) {
var tot = opener.document.joinform.Org_totalprice.value ;
tot = String( Number(tot) - Number(amt) ) ;
opener.document.joinform.totalprice.value = tot;
opener.document.joinform.coupon_id.value = c_id ;
opener.document.joinform.all["tot"].innerHTML = maskNum    (opener.document.joinform.Org_totalprice.value) + "USD - " + maskNum(amt) +" USD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color='red'>TOTAL : " + maskNum(tot) + " USD</font></b> ";
opener.cal_payment_money() ;
self.close();
}
</script>

<a href="javascript: sel_coupon('BGG30055901', '3000')"> Apply This coupon</a>
4

1 に答える 1

0

getElementByIdオブジェクトではなく、関数です。あれを呼べ:

document.getElementById('tot')

に適用する必要があることに注意してくださいdocument。個々の要素には がありませんgetElementById。それは使用の問題で.allもあります。Chrome はallInternet Explorer 用に設計されたページとの互換性のためにサポートしていますが、 のプロパティとしてのみサポートしていますdocument

于 2012-06-27T22:18:37.403 に答える