首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下拉列表在IE中没有被填充吗?

下拉列表在IE中没有被填充吗?
EN

Stack Overflow用户
提问于 2009-10-06 10:47:17
回答 3查看 791关注 0票数 3

我正在尝试获得一个子类别的选择列表的值,在类别选择列表中选择的基础上。它似乎在IE上不起作用。有谁能提出这个问题吗?

在php文件中,我有

代码语言:javascript
运行
复制
<body onload="setSubcategories(default_value);">

在js文件中,我有如下内容

代码语言:javascript
运行
复制
 subcategories = new Array();
 subcategories['Lifestyle'] = ['All',
                                  'Beauty (SHC)',
                                  'Skin Care',
                                  'Hair Care',
                                  'Oral Care',
                                  'Cosmetics',
                                  'Footwear',
                                  'Jewelry',
                                  'Male Styling',
                                  'Women Hygiene',
                                  'Womens magazines',
                                  'Apparels',
                                  ' Fashion (AFA)',
                                  'Spa',
                                  'Accessories'
                                  ];
    subcategories['Automobiles'] = ['All',
                           'Automobiles (C&B)',
                           'Cars',
                           'Bikes',
                           'Car Magazine',
                           'Bikes Magazine',
                           'Accessories'
                       ];
    subcategories['FoodandBeverage'] = ['All',
                                  'Snacking',
                                  'Confectionary',
                                  'Beverages',
                                  'Generic F&B',
                                  'Restaurant Review',
                                  'Food Reviews',
                                  'Wines & Vineyards'
                              ];


function setSubcategories(default_value){
    default_value = (typeof default_value == 'undefined') ?
             'All' : default_value;
    var elem = document.getElementById('id-category');
    if(elem == null){return false;}

    var category = elem.value;
    var subelem = document.getElementById('id-subcategory');
    var html = "";
    var subcategoriesArr = subcategories[category];
    for(var i=0; i < subcategoriesArr.length; i++){
        var selected = subcategoriesArr[i] == default_value ? " selected" : "";
        html += '<option' + selected + '>' + subcategoriesArr[i] + '</option>\n';
    }
    subelem.innerHTML = html;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-06 11:15:47

尝试使用DOM等效项:

代码语言:javascript
运行
复制
var subcategoriesArr = subcategories[category];
for(var i=0; i < subcategoriesArr.length; i++){
    var option = document.createElement('option');
    option.value = option.text = subcategories[i];
    option.selected = (subcategoriesArr[i] == default_value);
    subelem.appendChild(option);
}
票数 3
EN

Stack Overflow用户

发布于 2009-10-06 11:35:20

我以前遇到过这个bug。不能在Internet Explorer中的select元素上设置innerHTML。您必须将select元素包装在div (或其他一些元素)中,然后为包含您想要插入的选项的新select元素生成标记。

下面是一小段伪代码:

  1. 目标select
  2. 将select包装在div元素中
  3. 存储select的标记以供以后重用(第5步),并清除div的内容
  4. 为存储的select标记

中的标记生成标记H112将整个内容放在select元素周围的div内<代码>H213<代码>G214

不用说:我最终使用了纯DOM方法。这是一个遗憾,因为它比使用innerHTML慢得多。

票数 0
EN

Stack Overflow用户

发布于 2009-10-06 12:00:52

使用历史悠久的方法创建Option对象,并将它们添加到select的options集合中:

代码语言:javascript
运行
复制
var subcategoriesArr = subcategories[category];
var i, len, selected, optionText;

// Clear any existing options
subelem.options.length = 0;

// Create new options
for (i = 0, len = subcategoriesArr.length; i < len; i++){
  selected = (subcategoriesArr[i] === default_value);
  optionText = subcategoriesArr[i];
  subelem.options[i] = new Option(optionText, optionText, selected, selected);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1524856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档