在CHROME中未捕获的TypeError

时间:2012-06-27 22:15:19

标签: google-chrome popup

我以前问了同样的问题。但它仍然在CHROME上有错误,但它在IE上运行良好。 Parent html将mycoupon3.jsp调用为弹出窗口,如果选中了popup中的一行,则将INNERHTML发送给父html。

问题是,弹出窗口中的数据未转换为父html。在chrome dubugging工具上说Uncaught TypeError:无法在“opener.document.joinform.all [”tot“]。innerHTML”中读取未定义的属性'tot'。弹出窗口也不会自我关闭。

我认为所有[“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>

1 个答案:

答案 0 :(得分:0)

getElementById不是一个对象,它是一个函数。叫它:

document.getElementById('tot')

请注意,您必须将其应用于document;个别元素没有getElementById。这也是使用.all的问题;虽然Chrome支持all以便与为Internet Explorer设计的网页兼容,但它仅支持document的属性。