js碰到IE和谷歌兼容性问题

zklfire37 2013-10-29 02:08:16
这是js代码
function addYY(element){
var tag = element.parentNode;
var tagP = document.createElement("p");
var yyInput = document.createElement("input");
var butInput = document.createElement("input");
yyInput.setAttribute("type","text");
yyInput.setAttribute("name","yyCheck");
yyInput.setAttribute("maxlength","128");
yyInput.setAttribute("size","60");
butInput.setAttribute("type","button");
butInput.setAttribute("value","删除");
butInput.setAttribute("onclick","removeYY(this)");
tagP.appendChild(yyInput);
tagP.appendChild(butInput);
tag.appendChild(tagP);
element.remove;
tag.appendChild(element);
}

function removeYY(element){
var tag = element.parentNode;
if(confirm("确定删除此条原因?")){
tag.remove();
}
}




html页面代码:
<tr>
<td width="70" align="left" style="padding-left: 5">
原因:
</td>

<td align="left" style="padding-left: 5" bgcolor="#FFFFFF">
<logic:iterate id="ary" name="yyArray">
<%-- <html:text property="${ary}" maxlength="128" size="50"/> --%>
<p>
<input type="text" name="yyCheck" value="${ary}" maxlength="128" size="60"/>
<input type="button" value="删除" onclick="removeYY(this)"/>
<font class="needColor" >*</font><br/>
</p>

</logic:iterate>
<input type="button" value="增加" onclick="addYY(this)"/>
</td>
</tr>



现情况是这样的:在谷歌浏览器下,我按下增加的按钮后,会增加一个输入框和删除按钮,如图,然后点击删除按钮,可删除刚增加的输入框。
可是在IE浏览器下,只会实现增加功能,但是点击删除按钮时无效的,我用调试工具看了下,IE下并没有出现此标签。。求前端大神高手帮忙解决..
...全文
546 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zklfire37 2013-10-31
  • 打赏
  • 举报
回复
[quote=引用 9 楼 ziyu529 的回复:] 主要是新加的input ,点击一下,调用不到removeYY();里面只写了alert
ziyu529 2013-10-31
  • 打赏
  • 举报
回复

function removeYY(obj){
	var row = obj.parentNode.parentNode; 
	var tb = row.parentNode; //当前表格
	var rowIndex = row.rowIndex;
	if(tb.rows.length>1){
		tb.deleteRow(rowIndex);
}
zklfire37 2013-10-31
  • 打赏
  • 举报
回复
[quote=引用 6 楼 wcnm007 的回复:] 没成功,而且removeYY都没被调用到
zklfire37 2013-10-31
  • 打赏
  • 举报
回复
[quote=引用 11 楼 whatisma 的回复:] 可以了,十分感谢!
zklfire37 2013-10-31
  • 打赏
  • 举报
回复
[quote=引用 11 楼 whatisma 的回复:] 按你的改了下,还是差不多情况,chrome下可以删掉,IE下不可以。但是removeYY()是触发了,但是element传进来的却是object
whatisma 2013-10-31
  • 打赏
  • 举报
回复
引用 2 楼 zklfire37 的回复:
晕,这个弄错了,不过我刚把这行给去掉了,还是没用
本质就是你的tag.remove();这行代码不兼容问题。 改为:

function removeYY(element) {
                var tag = element.parentNode;
                if (confirm("确定删除此条原因?")) {
                    tag.parentNode.removeChild(tag);
                }
            }
这种动态添加我一般用这个方法:

<td>
                <p id="pTemp" style="display: none;">
                    <input  type="text" name="yyCheck"  maxlength="128" size="60"/>
                    <input  type="button" value="删除" onclick="removeYY(this)"/>
                </p>
                <p>
                    <input  type="text" name="yyCheck"  maxlength="128" size="60"/>
                    <input  type="button" value="删除" onclick="removeYY(this)"/>
                </p>
                <input  type="button" value="增加" onclick="addYY(this)"/>
                </td>
然后addYY方法:

function addYY(element) {
                var p1=document.getElementById("pTemp");
                var newP=p1.cloneNode(true);
                p1.parentNode.insertBefore(newP,element);
                newP.style.display="";
            }
这样好处是减少js代码量,并且样式什么的都可以事先控制好。缺点就是保存时候需要忽略隐藏那个模板元素。
别闹腰不好 2013-10-30
  • 打赏
  • 举报
回复
你吧元素的ID和name都设置上值。
极限战略 2013-10-30
  • 打赏
  • 举报
回复
removeYY事件执行成功了? 跑到里面发现 element 是空的?
zklfire37 2013-10-29
  • 打赏
  • 举报
回复
[quote=引用 4 楼 ameol 的回复:] 可是我把removeYY(element)方法里只做了个alert("----");都调用不到。。这是什么问题呢
我就是大神 2013-10-29
  • 打赏
  • 举报
回复
给他父元素起个id名比如ddd,然后document.getElementById('ddd').removeChild(tag);
zklfire37 2013-10-29
  • 打赏
  • 举报
回复
[quote=引用 1 楼 mmm306306 的回复:] 晕,这个弄错了,不过我刚把这行给去掉了,还是没用
zklfire37 2013-10-29
  • 打赏
  • 举报
回复
晕,这个弄错了,不过我刚把这行给去掉了,还是没用
马老虎 2013-10-29
  • 打赏
  • 举报
回复
这个是闹甚?

element.remove;
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 百度一下,你就知道 var wpo={start:new Date*1,pid:109,page:‘superpage’} 可以打开百度,右键查看源码看下!我们可以看下文件头是否存在这样一行代码! 这句话的意思是强制使用IE7模式来解析网页代码! 在这里送上几种IE使用模式! 2. Google Chrome Frame也可以让IE用上Chrome的引擎: 3.强制IE8使用IE7模式来解析 //或者 4.强制IE8使用IE6或IE5模式来解析 5.如果一个特定版本的IE支持所要求的兼容性模式多于一种,如: 二.设定网站服务器以指定预设兼容性模式 如果服务器是自己的话,可以在服务器上定义一个自订标头来为它们的网站预设一个特定的文件兼容性模式。这个特定的方法取决于你的网站服务器。 录入,下列的 web.config文件使Microsoft Internet Information Services (IIS)能定义一个自订标头以自动使用IE7 mode来编译所有网页。 另外还有一起其他的解决方案,例如google的 ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准,支持CSS2、CSS3选择器。它修复了许多的HTML和CSS问题,并使得透明PNG在IE5、IE6下正确显示。 使IE5,IE6兼容到IE7模式(推荐) 使IE5,IE6,IE7兼容到IE8模式 使IE5,IE6,IE7,IE8兼容到IE9模式 解决PNG显示问题 只需将透明png图片命名为*-trans.png 需要注意的是:此方法对背景平铺(background-repeat)和背景(background-position)无法起到任何作用,默认会占满整个容器

87,907

社区成员

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

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