IE11 下 x.insertBefore(select, otherEelment) 方法无效,select 问题

凌晨4点5杀老大爷 2018-03-05 04:42:36
如题 在IE11 下 select 貌似不是dom 对象是个object,object 对象,导致insertBefore 方法执行错误,请有经验大牛帮计解决这个兼容问题。
IE 下 select 是 object,object类型

谷歌浏览器下 select 是 dom 类型


...全文
742 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39863369 2018-03-06
  • 打赏
  • 举报
回复
不行select用个label或者span包起在试试插入label或者span,反正你的代码测试没有问题。。
  • 打赏
  • 举报
回复
引用 23 楼 showbo 的回复:
不行select用个label或者span包起在试试插入label或者span,反正你的代码测试没有问题。。
改用 insertAdjacentHTM 实现了,无奈
  • 打赏
  • 举报
回复
不行select用个label或者span包起在试试插入label或者span,反正你的代码测试没有问题。。
  • 打赏
  • 举报
回复
引用 14 楼 zzgzzg00 的回复:
insertAdjacentHTML试试呢
也不行
引用 21 楼 wcwtitxu 的回复:
没发现问题
IE 版本是多少? 不同IE11 貌似还不一样 服了
wcwtitxu 2018-03-05
  • 打赏
  • 举报
回复

没发现问题
  • 打赏
  • 举报
回复
搞的纯js 对ie的兼容性真是太无语了, 开发用谷歌浏览器,弄好,花不大代价就能兼容火狐,360,搜狗,到ie这头大
  • 打赏
  • 举报
回复
没问题,input1钱可以插入select 第二个肯定报错了,input2这个id的控件又不存在
  • 打赏
  • 举报
回复
引用 17 楼 showbo 的回复:
没问题,input1钱可以插入select 第二个肯定报错了,input2这个id的控件又不存在
上面的改错了 id="bill_covenant_a10000_b1_2" => id ="input2"
  • 打赏
  • 举报
回复
引用 14 楼 zzgzzg00 的回复:
insertAdjacentHTML试试呢
insertAdjacentHTML可以,问题是 如何区分出来 insertBefore 是不能使用的
  • 打赏
  • 举报
回复
引用 13 楼 showbo 的回复:
parentElement改parentNode试试呢。。d是什么节点
parentNode 也是不行的
  • 打赏
  • 举报
回复
引用 13 楼 showbo 的回复:
parentElement改parentNode试试呢。。d是什么节点

<!doctype html>
<html>
<head>
</head>
<body>
<div  id="div1">
<input   type="text" style="width:130px"  id="input1"   title="" >
</div>
<table>
<tr>
<td>
<input   type="text" style="width:130px" class="input_c c2" id="bill_covenant_a10000_b1_2"   title="" >
</td>
</tr>
</table>
</body>
<script>
	window.onload = function(){
		var div1 = document.getElementById("div1");
		var input1  = document.getElementById("input1");
		var select1 = document.createElement("SELECT");
		input1.parentElement.insertBefore(select1,input1);
	
		var input2= document.getElementById("input2");
		var select2 = document.createElement("SELECT");
		input2.parentElement.insertBefore(select2,input2);
	};
</script>
</html>
手写了个测试, input1.parentElement.insertBefore(select1,input1); 这个时候就直接报错了 input2.parentElement.insertBefore(select2,input2); 也报相同错误,看了不少td 的问题
似梦飞花 2018-03-05
  • 打赏
  • 举报
回复
insertAdjacentHTML试试呢
  • 打赏
  • 举报
回复
parentElement改parentNode试试呢。。d是什么节点
  • 打赏
  • 举报
回复
bug不多就不是ie了。。
  • 打赏
  • 举报
回复
总是参数无效的 错误提示,insertBefore 的第一个参数不符合类型导致的
  • 打赏
  • 举报
回复
引用 9 楼 showbo 的回复:

bug不多就不是ie了。。

我手工又测试了下 还是不行,这是真实环境

  • 打赏
  • 举报
回复
我IE 是这个版本,我用server 2012 的IE 11 测试没这个问题,这是服了
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
测试了没有问题。。需要获取select对象,不能直接插入NodeList
<div id="dv">div</div>
<script>

    function parseToDOM(str) {
        var div = document.createElement("div");
        if (typeof str == "string")
            div.innerHTML = str;
        return div.childNodes;
    }
    var sel = parseToDOM('<select></select>')[0];//////////
    document.body.insertBefore(sel, document.getElementById('dv'));
  
</script>
IE11 哪个版本? 实际情况是 select = document.createElement("SELECT"); 我用parseToDOM 是测试来的
天际的海浪 2018-03-05
  • 打赏
  • 举报
回复
parseToDOM()是什么函数,是不是这个函数有问题?
加载更多回复(4)

87,990

社区成员

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

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