更改下拉列表中的文本

时间:2011-08-10 11:19:49

标签: javascript forms

如果我有

<select name="id[3]" id="attrib-3">
  <option value="11">None</option>
  <option value="13">White ($4.72)</option>
  <option value="32">Black ($5.90)</option>
  <option value="12">Blue ($5.90)</option>
</select>

我想根据另一个下拉列表更改价格,我有哪些选择? (假设我知道在这种情况下选项13应该是5.72,选项32应该是6.90,选项12应该是6.90,例如)。我在第一次下拉触发时有onchange,我知道如何到达attrib-3,但我不知道如何更改下拉列表的文本字段。

3 个答案:

答案 0 :(得分:5)

您可以循环选项:

for(var i = 0, l = select.options.length; i < l; i++) {
    var option = select.options[i];
    if(option.value == "...") {
        option.innerHTML = "...";
    }
}

我会把它放在一个函数中并传递一个你搜索和替换的值,或者一个映射。类似的东西:

setOptionText(select, 'value', 'text');
// or
setOptionText(select, {'value': 'text', 'value': 'text', ...});

参考HTMLSelectElement

答案 1 :(得分:1)

Felix的解决方案可以解决问题,而且是纯JavaScript,但您可能会发现使用jQuery更容易。它具有诸如此类的简短功能。例如:

$('option[value="13"]').text('some text');

这是一个fiddle来证明这一点。

请注意,使用jQuery意味着页面需要加载库。这可能会影响性能。根据我的经验,通常jQuery的性能含义并不值得担心。它还具有允许您编写更少JS以实现相同目标的优势,如果您有大量脚本,则可能实际上提高性能。

答案 2 :(得分:0)

我使用条目“(Ohne)”查找所有下拉列表的方法,这是查找字段下拉列表的SharePoint默认值。它将找到所有下拉值“(Ohne)”并将它们重命名为“Bittewählen”,这意味着请选择英语。 使用SharePoint Designer将快速和脏的内容放入Web / List / Listname /NewForm.aspx。

对某些肮脏的解决方案可能有用:

<script language="javascript" type="text/javascript">
var dropDowns = document.getElementsByTagName('select');
for (var i = 0; i < dropDowns.length; i++) {
    try{
    if (dropDowns[i].options[0].text == '(Ohne)')
    {
        dropDowns[i].options[0].text = 'Bitte wählen';
    }
    }
    catch(err)
    {
        // catches array exceptions occurred by <select> tags without <options>
    }
}
</script>