select 动态高效赋值

本文介绍了一种高效地为HTML中的Select元素动态更新大量选项的方法,针对数百个选项时避免页面卡顿的问题。通过创建新的Select元素并保留原有属性的方式,提高了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于 select 下拉框赋值的问题, 网上有很多基本的这里就简单说下的了

1,

     var theOption = new Option(text, value); 

     theElement.options[index] =  theOption ;

2.

     array 数组将  options 字符串 用 数组的 join() 起来,

3.

     var theOption = document.createElement("option");

    theOption.text = "text";

    theOption.value = "value";

以上三种方式的最后基本就是来个  var selectStr = "<select ...>" + theElementString + "</select>";

这些方式对于只要初始话一次的需求是没有问题的. 关键在当前页面随时动态赋值对于已经存在的以上方式在

select 的 option 数量较少的情况(几十个). 但是在有几百个的情况下, 上面的赋值方式会让页面死在那里,其它任何操作都不能响应的了.

所以我摸索了下面第四种方式,欢迎大家批评指正

4.

 

  /**
* pSelEle : origional select element node ID
* pOptStr : new options string
*/

function  setSelEleOption(pSelEle, pOptStr)
{
    
var parentNode = null;
 
var selNode = document.getElementById(pSelEle);
 
if(selNode)
 
{
  parentNode 
= selNode.parentNode;// Get the select element's parent node
 }

 
var attributeStr = getSpecifiedAttr(selNode);
 
var newSel = '<select ' + attributeStr + ' >' + pOptStr + '</select>';
  
try
 
{
     parentNode.appendChild(document.createElement(newSel));
  }
catch (e)
 
{
  alert(
" Set options for field " + pSelEle + " failed.");
 }
 
}


function  getSpecifiedAttr(pElem)
{
 
if (pElem == null || (!pElem.attributes)) return "";
 
var attributeStr = "";
 
var node = null;
 
var nodeList = pElem.attributes;
 
for(var i = 0; i < nodeList.length; i++)
 
{
  node 
= nodeList.item(i);
  
if (!node.specified) continue;
  
        attributeStr 
+= node.name + "="" + node.value + "";
 }

    
return attributeStr;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值