javascript - 仅在选定模式下更改选定选项的文本

标签 javascript html

不知道上面的标题是不是把大家弄糊涂了。我的问题如下。

我的代码使用标准的 javascript(没有 jQuery)和 HTML。要求是对于 <select>...</select>菜单,我有一个不同长度的动态列表。

现在如果 option[selectedIndex].text > 43 的长度字符,我想更改 option[selectecIndex]到一个新的文本。

我可以通过调用来做到这一点

this.options[this.selectedIndex].text = "changed text"; 

在 onChange 事件中工作正常。这里的问题是,一旦用户决定更改选择,下拉列表就会显示带有更改文本的先前选择的文本。这需要显示原始列表。

我被难住了!有更简单的方法吗?

任何帮助都会很棒。

谢谢

最佳答案

您可以将以前的文本值存储在某些数据属性中,并在必要时使用它来重置文本:

document.getElementById('test').onchange = function() {

    var option = this.options[this.selectedIndex];

    option.setAttribute('data-text', option.text);
    option.text = "changed text";

    // Reset texts for all other options but current
    for (var i = this.options.length; i--; ) {
        if (i == this.selectedIndex) continue;
        var text = this.options[i].getAttribute('data-text');
        if (text) this.options[i].text = text;
    }
};

http://jsfiddle.net/kb7CW/

关于javascript - 仅在选定模式下更改选定选项的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099362/

相关文章:

c# - Javascript 由于 Response.Redirect() 而被忽略

javascript - 如何在没有 DOM 对象的情况下将事件绑定(bind)到函数

html - 如何使用 CSS 降低元素背景的不透明度?

Javascript:将文本框数字条目转换为相应的字母等级

javascript - 重新加载页面时它会自动保留页面的滚动位置这是怎么发生的?

html - 表格行,你能把高度设置为零吗?

javascript - 使用 moment.js 将天数转换为月份和剩余天数

javascript - 尝试将数据输入表单,然后在同一页面和弹出窗口中显示数据

javascript - 在不影响内部图像的情况下 Canvas 的不透明度

javascript - 将固定宽度层内可变高度的 float 元素相互底部对齐,行之间没有边距或空格