`
tolys
  • 浏览: 115455 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

为select动态添加option问题

阅读更多

题记:今天为个项目做两个多选列表框互相移动案例,要求支持包括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下均可以正常运行,不错的浏览器,就像他的外表一样有魅力。
分享到:
评论

相关推荐

    JS动态添加Select中的Option元素值

    以下是一个简单的示例,展示了如何使用JavaScript动态创建并添加Option元素到Select中: ```html &lt;!DOCTYPE html&gt; 动态添加Option &lt;select id="select1"&gt;&lt;/select&gt; &lt;select id="select2"&gt;&lt;/select&gt; // ...

    向元素中动态添加option

    这篇博客“向&lt;select&gt;元素中动态添加option”探讨的就是如何在JavaScript或jQuery的帮助下,实现在用户界面中动态地向`&lt;select&gt;`元素添加选项。 JavaScript是一种广泛使用的客户端脚本语言,它可以操作HTML元素,...

    layui select动态添加option的实例

    "layui select动态添加option的实例" 本文主要讲解了如何使用 layui 实现select动态添加option的功能。layui是一款轻量级的前端框架,提供了许多实用的组件和功能,select组件是其中的一种,能够实现动态添加option...

    JS动态添加option和删除option(附实例代码)

    1.动态创建select 代码如下: function createSelect(){ var mySelect = document.createElement(“select”); mySelect.id = “mySelect”; document.body.appendChild(mySelect); } 2.添加选项option 代码如下: ...

    js实现动态生成select中的option

    在JavaScript编程中,动态生成`select`元素中的`option`是一项常见的需求,特别是在网页交互或者数据展示时。本文将深入探讨如何使用JavaScript实现这一功能,同时结合提供的`autoSelect.html`和`autoselect.txt`...

    动态给select添加option失败的问题原因及解决

    做作业的时候需要给给一个select标签动态添加option,但却总是不成功,刚开始我是这样写的: $(#day).options.append(new Option(i,i)); 然后发现并没有变化,查资料后才发现,如果要用jQuery给select标签动态添加...

    select option带自定义图片

    以下是一个关于如何在`&lt;select&gt;`和`&lt;option&gt;`中添加自定义图片的详细教程。 首先,我们需要理解HTML基础。`&lt;select&gt;`元素创建一个可选列表,用户可以选择其中的一个或多个选项。`&lt;option&gt;`元素定义了下拉列表中的一...

    Ant design vue中的a-select在动态给option赋值之后,placeholder失效.pdf

    在实际开发过程中,我们可能会遇到一个常见问题,即当动态地给`a-select`的`option`赋值后,其`placeholder`属性失效,不再显示默认提示文本。这个问题通常出现在数据异步加载的情况下,比如从服务器获取数据并填充...

    jquery动态添加option

    本篇文章将深入探讨“jquery动态添加option”这一主题,它涉及到如何在HTML的下拉选择框(`&lt;select&gt;`元素)中动态地添加选项(`&lt;option&gt;`元素)。这种操作在网页交互和数据动态展示中非常常见,例如在用户筛选、数据...

    select将选中的option设置为默认选项

    以下是一个简单的示例,展示了如何通过ID找到`&lt;select&gt;`元素,然后设置特定`&lt;option&gt;`为选中状态: ```javascript // 获取select元素 var selectElement = document.getElementById('mySelect'); // 获取要设为...

    js 操作select和option

    接着,通过 `options.add()` 方法向 `&lt;select&gt;` 中添加了一个新的 `&lt;option&gt;` 元素。需要注意的是,`new Option()` 构造函数的第一个参数是显示的文本,第二个参数是实际提交的值。 #### 3. 删除所有 Option 项 ``...

    jquery Ajax实现Select动态添加数据

    但是,这次要实现select与别的选项框联动,也就是要动态添加option数据。查阅了很多资料,终于搞定。下面就分享一下,如何利用jQuery和Ajax实现select动态添加数据。  2.本文代码实现的是车辆型号根据车辆品牌联动...

    JQuery动态添加Select的Option元素实现方法

    如下所示: var selector=$('&lt;select&gt;&lt;/select&gt;...以上这篇JQuery动态添加Select的Option元素实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

    4、Webdynpro入门之Select-Option【原创】

    总结来说,本文详细讲解了 Select-Option 在 Webdynpro 中的应用,包括如何新建组件、添加 Select-Option 组件、建立局部节点、设置 Table 控件的 ID、绑定节点、添加 Attributes 和使用 Methods 等内容。

    javascript_select_option_操作详解.txt

    接下来是向 `&lt;select&gt;` 元素中添加 `&lt;option&gt;` 项的操作。可以使用 `add` 方法或者直接通过修改 `options` 属性来实现: ```javascript function addOption(selectElement, text, value) { var newOption = new ...

    jquery获得select option值

    var item = $("select[@name=items] option:selected").text(); ``` 这里使用了`option:selected`选择器来选取当前被选中的`&lt;option&gt;`元素,并通过`.text()`获取其文本内容。 2. **设置默认选中的下拉项**: ``...

    自定义带图标的select,只需把图标地址写在option的title属性中即可

    这个JS插件就是为了解决这个问题,它扩展了`&lt;select&gt;`的功能,允许我们在`&lt;option&gt;`的`title`属性中插入图标地址,然后在界面上动态渲染这些图标。 接下来,我们要探讨如何使用这个插件。在项目中,首先需要引入...

    利用js给datalist或select动态添加option选项的方法

    本文将详细介绍如何使用 JavaScript 为 `datalist` 或 `select` 元素动态添加 `option` 选项,这对于创建动态、可自定义的下拉列表或者输入提示至关重要。 首先,让我们解析一下 `datalist` 和 `select` 元素。`...

    JavaScript实现select添加option

    综上所述,实现select添加option的基本步骤和要点包括: 1. 使用`document.createElement("SELECT")`创建select元素。 2. 使用循环结构,通过`new Option(text, value)`创建option元素,并利用`_select.options.add...

    Webdynpro for ABAP中select option 用法

    如果选择条件比较复杂,开发者无需在SELECT查询中编写冗长的逻辑表达式,这些问题可以通过Select Options语句来解决。Select Options定义了一个范围表,该表包含四列:Sign、Option、Low和High。 例如,在ABAP报告...

Global site tag (gtag.js) - Google Analytics