jquery给父页面元素赋值后产生的怪问题

cd731107 2015-03-22 03:50:28
<script type="text/javascript" src="../../../js/jquery-1.4.2.min.js"></script>
<script language="javascript">
function change(TmpBOMPRId,field,val,idx,obj){

var _tmp=0;
$.each($('[name^="ReadyTime"]'), function(i,v){
_tmp += parseFloat(parseFloat($(v).val()).toFixed(3));
})
alert(parent.document.all("ReadyTime").value); //这里可以正常显示父页面元素ReadyTime的value值

parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3));

alert(parent.document.all("ReadyTime").value); //这里有问题了,变成undefined

//1.执行到上面这句,父页面元素ReadyTime的value却变成undefined 但html父页面上此元素的值确实显示为合计值了,不知是为什么 ?
//2.另外,如果把parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3)); 改为parent.$('[name^="ReadyTime"]').val(_tmp.toFixed(3));
//实际上由于父页面上只有一个name=ReadyTime的input元素,用name^="ReadyTime"和name="ReadyTime" 的效果应该一样,
//但执行最后一句alert时,用name^="ReadyTime"没问题;用name="ReadyTime",就会变成undefined
//3.实际上,如果把这句parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3)); 改为 parent.document.all("ReadyTime").value=_tmp;
//也是正常的,执行最后一句会正确显示 parent.document.all("ReadyTime")的value
}
</script>


请帮忙看一下上面这个怪问题
...全文
183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohmygirl 2015-03-24
  • 打赏
  • 举报
回复
$('[name="ReadyTime"]', window.parent.document).val(_tmp.toFixed(3)); 可以么。
cd731107 2015-03-24
  • 打赏
  • 举报
回复
alert(parent.document.all("ReadyTime")==parent.$('[name="ReadyTime"]')[0])
结果是false 现在我把
parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3));
改成了
parent.document.all('ReadyTime').value=_tmp.toFixed(3);
就正常了
Go 旅城通票 2015-03-24
  • 打赏
  • 举报
回复
最好贴你的html代码全来,这样看不出什么问题

        parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3));
        alert(parent.document.all("ReadyTime")==parent.$('[name="ReadyTime"]')[0])//增加这句看下是否2个对象
cd731107 2015-03-24
  • 打赏
  • 举报
回复
请高手帮忙看看,非常感谢
Go 旅城通票 2015-03-24
  • 打赏
  • 举报
回复
引用 5 楼 cd731107 的回复:
alert(parent.document.all("ReadyTime")==parent.$('[name="ReadyTime"]')[0])

结果是false

现在我把
parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3));

改成了
parent.document.all('ReadyTime').value=_tmp.toFixed(3);


就正常了


为false说明不是同一个对象。。自己看下父页是不是动态加了其他对象进去了。。name=ReadyTime

而且依据你的描述说明这个对象还不是输入对象,自己console.log打印下这个对象看看
cd731107 2015-03-23
  • 打赏
  • 举报
回复
无论是执行parent.$('[name="ReadyTime"]').val(_tmp.toFixed(3));的前后,都是1
天际的海浪 2015-03-22
  • 打赏
  • 举报
回复
我测试的没有发现你说的问题 你看看parent.$('[name^="ReadyTime"]').length是1还是2

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧