摘要:问题现象:动态的改变HTML元素的内容时发生以下js报错:报错位置:位于jQuery.js的代码片段

脚本宝典收集整理的这篇文章主要介绍了

js实例教程-jQuery错误:意外地调用了方法或属性访问的解决办法

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

问题现象:动态的改变HTML元素的内容时发生以下js报错:

报错位置:位于jQuery.js的代码片段

append:function(){

return this.domManip(arguments,true,function(E){

if(this.nodeType==1) {

this.appendChild(E)

}

})}

JS代码:

function toPreCalc() {

if(validisOrNotSelected()) {

$("#noticed").html("已勾选的产品");

}else{

$("#noticed").html("所有存在自营客户存续份额的产品");

}

}

function validisOrNotSelected (){

var count = $("input[name='serial_no']:checked").length;

return (count>0);

}

DOM结构:

<p align="center"><br/>

<tr>

<td width="80px" align="left" nowrap="nowrap" >预算日期:</td>

<td align="left" nowrap="nowrap" colspan="2">

<input type="text" id="preCalcDate" name="preCalcDate" class="Wdate" onfocus="WdatePicker()" size="15" value="<%= preCalcDate %>"/>

</td><br/>

</tr>

<tr>

<td width="80px" align="left" nowrap="nowrap" name="notice"><font>计算范围:</font></td>

<td align="left" nowrap="nowrap" id="noticed" name="notice"><font> </font></td>

</tr><br/>

</p>

解决过程:

查资料发现该问题的产生原因为:ie对动态append的内容有要求,需要将一个具有完整意义的html一起append到代码中 。

仔细检查发现,我的p里直接以tr元素开始了,这对于要求严格的IE来说显然不符合其规定,从严谨的角度来讲;tr元素必须是在table元素里才算是完整的html代码。

然后再tr外再加了一个table元素,问题得以完美解决~

以下是修改后的DOM结构:

<p align="center"><br/>

<table>

<tr>

<td width="80px" align="left" nowrap="nowrap" >预算日期:</td>

<td align="left" nowrap="nowrap" colspan="2">

<input type="text" id="preCalcDate" name="preCalcDate" class="Wdate" onfocus="WdatePicker()" size="15" value="<%= preCalcDate %>"/>

</td><br/>

</tr>

<tr>

<td width="80px" align="left" nowrap="nowrap" name="notice"><font>计算范围:</font></td>

<td align="left" nowrap="nowrap" id="noticed" name="notice"><font> </font></td>

</tr><br/>

</table>

</p>

问题现象:动态的改变HTML元素的内容时发生以下js报错:

报错位置:位于jQuery.js的代码片段

append:function(){

return this.domManip(arguments,true,function(E){

if(this.nodeType==1) {

this.appendChild(E)

}

})}

JS代码:

function toPreCalc() {

if(validisOrNotSelected()) {

$("#noticed").html("已勾选的产品");

}else{

$("#noticed").html("所有存在自营客户存续份额的产品");

}

}

function validisOrNotSelected (){

var count = $("input[name='serial_no']:checked").length;

return (count>0);

}

DOM结构:

<p align="center"><br/>

<tr>

<td width="80px" align="left" nowrap="nowrap" >预算日期:</td>

<td align="left" nowrap="nowrap" colspan="2">

<input type="text" id="preCalcDate" name="preCalcDate" class="Wdate" onfocus="WdatePicker()" size="15" value="<%= preCalcDate %>"/>

</td><br/>

</tr>

<tr>

<td width="80px" align="left" nowrap="nowrap" name="notice"><font>计算范围:</font></td>

<td align="left" nowrap="nowrap" id="noticed" name="notice"><font> </font></td>

</tr><br/>

</p>

解决过程:

查资料发现该问题的产生原因为:ie对动态append的内容有要求,需要将一个具有完整意义的html一起append到代码中 。

仔细检查发现,我的p里直接以tr元素开始了,这对于要求严格的IE来说显然不符合其规定,从严谨的角度来讲;tr元素必须是在table元素里才算是完整的html代码。

然后再tr外再加了一个table元素,问题得以完美解决~

以下是修改后的DOM结构:

<p align="center"><br/>

<table>

<tr>

<td width="80px" align="left" nowrap="nowrap" >预算日期:</td>

<td align="left" nowrap="nowrap" colspan="2">

<input type="text" id="preCalcDate" name="preCalcDate" class="Wdate" onfocus="WdatePicker()" size="15" value="<%= preCalcDate %>"/>

</td><br/>

</tr>

<tr>

<td width="80px" align="left" nowrap="nowrap" name="notice"><font>计算范围:</font></td>

<td align="left" nowrap="nowrap" id="noticed" name="notice"><font> </font></td>

</tr><br/>

</table>

</p>

觉得可用,就经常来吧!Javascript技巧 脚本宝典 欢迎评论哦! js技巧,巧夺天工,精雕玉琢。小宝典献丑了!

总结

以上是脚本宝典为你收集整理的

js实例教程-jQuery错误:意外地调用了方法或属性访问的解决办法

全部内容,希望文章能够帮你解决

js实例教程-jQuery错误:意外地调用了方法或属性访问的解决办法

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过