[英]How to get visible options' count of HTML select tag, with multiple attribute set, while size not set?
在我的情况下,我想得到select元素的可见选项'count(通过可见选项'计数,我的意思是有多少选项在没有滚动的情况下可见 。感谢Matthew)。 如果设置了size属性,那么element.size是我需要的值。 如果不是,事情变得有点棘手。
例如,在以下代码中:
<select multiple="multiple">
<option>text1</option>
<option>text2</option>
<option>text3</option>
</select>
在IE / Chrome / Firefox中,它将如下图所示。 在这种情况下, 计数应为3:
如果前一种情况下的选项计数大于4,则仍显示4条可见线。 在这种情况下, 计数应为4:
除了使用if ... else ...之外 ,还有一种好方法可以在任何情况下获得可见选项的选择标记数量吗?
仅供参考,我正在开发一个测试软件来为客户的网站进行功能测试,因此我无法修改网页的代码。
我希望我理解正确:
var maxVisibleCount = Math.floor(containerHeight / optionHeight);
var actualCount = $(this).children('option').length;
var result = (maxVisibleCount > actualCount) ? actualCount : maxVisibleCount;
现场演示: https : //jsfiddle.net/md13qq0d/
编辑:对不起,我还没有看到你没有使用jQuery: https : //jsfiddle.net/md13qq0d/2/
您可以为您的选择标记提供ID,并使用该ID,您可以轻松检索否。 特定选择标签中的可见项目(选项)。例如 -
<script type="text/javascript">
alert($('#selectid option').length);
</script>
这里' selectid '是给你想要的可见选项的特定选择的id。
请检查你的数量......
function GetSelected () {
var select = document.getElementById ("mySelect");
var txt = "";
for (var i = 0; i < select.options.length; i++) {
var isSelected = select.options[i].selected;
isSelected = (isSelected)? "selected" : "not selected";
txt += "The " + i + " option is " + isSelected + "\n";
}
alert (txt);
}
我找到了这个问题的新解决方案,看起来似乎更好。 这是代码:
var e = document.getElementById("id_to_select");
var threshold;
if (e.size > 0) {
threshold = e.size;
} else { // size not set
threshold = e.multiple ? 4 : 1; // Why 4, please see below
}
return Math.min(e.length, threshold);
select元素有一些基本的事实让我编写这样的代码:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.