题记:今天为个项目做两个多选列表框互相移动案例,要求支持包括FF,IE,Safari(苹果)在内的浏览器使用。
问题:
现象一,用方法objSelect.appendChild(objOpiton)给select添加option时,添加有出现列表项,但是显示空白,IE下的现象。
现象二,用objSelect.add(objOpiton)添加option,FF下不支持。
关键代码(由于是日文项目,注释为日文可忽略不看):
function moveSelected(oSourceSel,oTargetSel)
{
//valueとtextを格納するキャッシュ配列を作成する
var arrSelValue = new Array();
var arrSelText = new Array();
//当該配列は選択されたoptionsを格納する
var arrValueTextRelation = new Array();
var index = 0;//補助的にキャッシュ配列を作成する
//ソースドロップダウンリストでの全てのデータをキャッシュに格納し、valueと選択されたoptionの対応関係を立てる
for(var i=0; i<oSourceSel.options.length; i++)
{
if(oSourceSel.options[i].selected)
{
//格納
arrSelValue[index] = oSourceSel.options[i].value;
arrSelText[index] = oSourceSel.options[i].text;
// valueと選択されたoptionの対応関係を立てる
arrValueTextRelation[arrSelValue[index]] = oSourceSel.options[i];
index ++;
}
}
//キャッシュでのデータをターゲットドロップダウンリストに追加して、ソースドロップダウンリストでの該当データを削除する
for(var i=0; i<arrSelText.length; i++)
{
//追加
var oOption = document.createElement("option");
oTargetSel.appendChild(oOption)
oOption.text = arrSelText[i];
oOption.value = arrSelValue[i];
//ソースドロップダウンリストでの該当データを削除する
oSourceSel.removeChild(arrValueTextRelation[arrSelValue[i]]);
}
}
观察以上代码55-59行
现象一代码为:
oOption.text = arrSelText[i];
oOption.value = arrSelValue[i];
oTargetSel.appendChild(oOption);
现象二出现的代码为:
oOption.text = arrSelText[i];
oOption.value = arrSelValue[i];
oTargetSel.add(oOption);
结论:
现象一中由于IE和FF对DOM的操作有所区别,故而导致IE下显示为空白列表,因为在IE下必须先得到节点后方能为该节点添加子节点或者属性值。
而FF并没有这个约束。
现象二,理由很简单,FF就是不支持add()的方式添加子节点。而IE为add做过特殊的处理,故而可以得到意向的结果。
补充,以上三种代码在safari下均可以正常运行,不错的浏览器,就像他的外表一样有魅力。
分享到:
相关推荐
1.动态创建select 代码如下: function createSelect(){ var mySelect = document.createElement(“select”); mySelect.id = “mySelect”; document.body.appendChild(mySelect); } 2.添加选项option 代码如下: ...
下面小编就为大家分享一篇layui select动态添加option的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
两个下拉列表,用JS动态添加Select中的Option元素值
NULL 博文链接:https://longying2008.iteye.com/blog/2203068
做作业的时候需要给给一个select标签动态添加option,但却总是不成功,刚开始我是这样写的: $(#day).options.append(new Option(i,i)); 然后发现并没有变化,查资料后才发现,如果要用jQuery给select标签动态添加...
如下所示: var selector=$('<select></select>...以上这篇JQuery动态添加Select的Option元素实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
select option 自定义图片的js 、css 以及代码展示,javaScript ;
但是,这次要实现select与别的选项框联动,也就是要动态添加option数据。查阅了很多资料,终于搞定。下面就分享一下,如何利用jQuery和Ajax实现select动态添加数据。 2.本文代码实现的是车辆型号根据车辆品牌联动...
jquery动态添加option js动态添加option 代码如下:var sel= document.getElementById(“Selected1”); sel.options.add(new Option(“请选择”,””));sel.options.add(new Option(“name”,”id”)); jquery...
下面小编就为大家分享一篇利用js给datalist或select动态添加option选项的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
里动态添加option问题,一开始以为是JS那里动态添加,所以用了JS动态添加option的方法,但你那里是用JQuery的,所以才会一直出错,下面记下在JS和JQuery里添加option的区别。 JS: var selid = document....
1 检测是否有选中 2.动态创建select 3.添加选项option 4.删除所有选项option 5.删除一个选项option 6.获得选项option的值......
//为Select添加事件,当选择其中一项时触发 var checkText=$(“#select_id”).find(“option:selected”).text(); //获取Select选择的Text var checkValue=$(“#select_id”).val(); //获取Select选择的Value var ...
动态删除select中的所有options、某一项option以及动态添加select中的项option,在IE和FireFox都能测试成功,感兴趣的朋友可以参考下,希望对大家有所帮助
关于解决ElementUi中select框在页面滚动时el-option超出元素区域的问题+ cascader滚动超出问题
Q694264 C# ajax读取后台接口,填充给select下拉框 https://ask.csdn.net/questions/694264
主要介绍了JavaScript为select添加option的方法和示例,十分的简单实用,有需要的小伙伴可以参考下。
如下所示: 代码如下://动态删除select中的所有options: function delAllOptions(){ document.getElementById(“user_dm”).options.length=0;... } // 动态添加select中的项option: function addOneO