option.style.display =“none”在 safari 中不起作用[重复]

2024-03-27

这是我正在研究的示例:http://jsfiddle.net/4suwY/5/ http://jsfiddle.net/4suwY/5/

HTML:

<select id="asd">
    <option>hello</option>
    <option>I'M THE CHOSEN ONE</option>
    <option>asd</option>
    <option>wer</option>
    <option>qwe</option>
</select>

JS:

var sel = document.getElementById("asd");
var optnz = sel.getElementsByTagName("option")[1];
sel.value = optnz.value;
optnz.style.display = "none";

正如你所看到的,它在 chrome 中工作,但在 safari 中不起作用。它应该做的是,当你单击下拉菜单时隐藏“我是选择的人”选项。

这是我做的另一个测试:http://jsfiddle.net/4suwY/11/ http://jsfiddle.net/4suwY/11/

同样的 HTML,这是 JS:

var sel = document.getElementById("asd");
var opt = document.createElement("option");
opt.innerHTML = "YAYA";
opt.value = "YAYA";
sel.appendChild(opt);
sel.value = "YAYA";
opt.style.display = "none";

无论如何,我需要做的是将一个选项显示为选定的(当前),并在打开下拉菜单时向用户隐藏,这样他就无法选择它。

有什么建议/解决方法吗?我没有看到任何错误。 Safari 出了什么问题?我应该改变方法吗? Jquery 似乎没有帮助。


EDITS:

我需要隐藏下拉菜单中的选项,但同时我需要将此选项“值”显示为所选值!例如,“关闭”下拉列表将显示值“我是选择的人”,但如果我单击并打开菜单,唯一可见的选项将是“hello,asd,wer,qwe”。


您无法打开显示<option>Safari(或 IE,就此而言)中的元素。这是 Safari 长期以来不一致的传统的一部分,它限制表单元素上的 CSS 样式功能,认为交互元素的视觉语言应该与操作系统一致(没有必要试图找到 IE 失败的理由)。

您唯一的选择是删除它(并稍后重新附加),或者将其设置为optnz.disabled = true。关于这些坏消息我很遗憾!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

option.style.display =“none”在 safari 中不起作用[重复] 的相关文章

随机推荐