题记:今天为个项目做两个多选列表框互相移动案例,要求支持包括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下均可以正常运行,不错的浏览器,就像他的外表一样有魅力。
分享到:
相关推荐
以下是一个简单的示例,展示了如何使用JavaScript动态创建并添加Option元素到Select中: ```html <!DOCTYPE html> 动态添加Option <select id="select1"></select> <select id="select2"></select> // ...
这篇博客“向<select>元素中动态添加option”探讨的就是如何在JavaScript或jQuery的帮助下,实现在用户界面中动态地向`<select>`元素添加选项。 JavaScript是一种广泛使用的客户端脚本语言,它可以操作HTML元素,...
"layui select动态添加option的实例" 本文主要讲解了如何使用 layui 实现select动态添加option的功能。layui是一款轻量级的前端框架,提供了许多实用的组件和功能,select组件是其中的一种,能够实现动态添加option...
1.动态创建select 代码如下: function createSelect(){ var mySelect = document.createElement(“select”); mySelect.id = “mySelect”; document.body.appendChild(mySelect); } 2.添加选项option 代码如下: ...
在JavaScript编程中,动态生成`select`元素中的`option`是一项常见的需求,特别是在网页交互或者数据展示时。本文将深入探讨如何使用JavaScript实现这一功能,同时结合提供的`autoSelect.html`和`autoselect.txt`...
做作业的时候需要给给一个select标签动态添加option,但却总是不成功,刚开始我是这样写的: $(#day).options.append(new Option(i,i)); 然后发现并没有变化,查资料后才发现,如果要用jQuery给select标签动态添加...
以下是一个关于如何在`<select>`和`<option>`中添加自定义图片的详细教程。 首先,我们需要理解HTML基础。`<select>`元素创建一个可选列表,用户可以选择其中的一个或多个选项。`<option>`元素定义了下拉列表中的一...
在实际开发过程中,我们可能会遇到一个常见问题,即当动态地给`a-select`的`option`赋值后,其`placeholder`属性失效,不再显示默认提示文本。这个问题通常出现在数据异步加载的情况下,比如从服务器获取数据并填充...
本篇文章将深入探讨“jquery动态添加option”这一主题,它涉及到如何在HTML的下拉选择框(`<select>`元素)中动态地添加选项(`<option>`元素)。这种操作在网页交互和数据动态展示中非常常见,例如在用户筛选、数据...
本文将详细介绍如何使用 JavaScript 为 `datalist` 或 `select` 元素动态添加 `option` 选项,这对于创建动态、可自定义的下拉列表或者输入提示至关重要。 首先,让我们解析一下 `datalist` 和 `select` 元素。`...
以下是一个简单的示例,展示了如何通过ID找到`<select>`元素,然后设置特定`<option>`为选中状态: ```javascript // 获取select元素 var selectElement = document.getElementById('mySelect'); // 获取要设为...
接着,通过 `options.add()` 方法向 `<select>` 中添加了一个新的 `<option>` 元素。需要注意的是,`new Option()` 构造函数的第一个参数是显示的文本,第二个参数是实际提交的值。 #### 3. 删除所有 Option 项 ``...
但是,这次要实现select与别的选项框联动,也就是要动态添加option数据。查阅了很多资料,终于搞定。下面就分享一下,如何利用jQuery和Ajax实现select动态添加数据。 2.本文代码实现的是车辆型号根据车辆品牌联动...
如下所示: var selector=$('<select></select>...以上这篇JQuery动态添加Select的Option元素实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
总结来说,本文详细讲解了 Select-Option 在 Webdynpro 中的应用,包括如何新建组件、添加 Select-Option 组件、建立局部节点、设置 Table 控件的 ID、绑定节点、添加 Attributes 和使用 Methods 等内容。
接下来是向 `<select>` 元素中添加 `<option>` 项的操作。可以使用 `add` 方法或者直接通过修改 `options` 属性来实现: ```javascript function addOption(selectElement, text, value) { var newOption = new ...
var item = $("select[@name=items] option:selected").text(); ``` 这里使用了`option:selected`选择器来选取当前被选中的`<option>`元素,并通过`.text()`获取其文本内容。 2. **设置默认选中的下拉项**: ``...
这个JS插件就是为了解决这个问题,它扩展了`<select>`的功能,允许我们在`<option>`的`title`属性中插入图标地址,然后在界面上动态渲染这些图标。 接下来,我们要探讨如何使用这个插件。在项目中,首先需要引入...
综上所述,实现select添加option的基本步骤和要点包括: 1. 使用`document.createElement("SELECT")`创建select元素。 2. 使用循环结构,通过`new Option(text, value)`创建option元素,并利用`_select.options.add...
如果选择条件比较复杂,开发者无需在SELECT查询中编写冗长的逻辑表达式,这些问题可以通过Select Options语句来解决。Select Options定义了一个范围表,该表包含四列:Sign、Option、Low和High。 例如,在ABAP报告...