如何将 HTML 多 selection select 框滚动到第一个 selected 选项?
How do I scroll an HTML multiple-selection select box to the first selected option?
我试图让 HTML 多选 select
框滚动到第一个选择的选项,但我找不到任何方法。有办法吗?
<select id=s multiple>
<option value=0>One</option>
...
<option value=99 selected>Many</option>
</select>
您可以使用以下函数查找列表中第一个 selected 元素,然后将 select 框滚动到它。
确保在已经加载 selections 时调用该函数,通常是在 window.onload
事件上,但如果您正在填充 select ion与ajax调用,需要分别调用该函数(一旦selection已经到位)
// this is how you call the function, using the ID ("s") in your example:
window.onload = function(){
scrollToSelected( "s" )
}
function scrollToSelected( select_id ) {
var select = document.getElementById( select_id );
var opts = select.getElementsByTagName('option');
for ( var j = opts.length -1; j > 0; --j ) {
if ( opts.item(j).selected == true ) {
select.scrollTop = j * opts.item(j).offsetHeight;
return;
}
}
}
您可以使用以下行设置确切的滚动位置:
select.scrollTop = j * opts.item(j).offsetHeight;
...以上将尝试滚动,直到 selected 位于列表顶部。
感谢您的建议。
看来我不能post在评论中编码,所以我需要把它放在这里。 option
标签的 CSS 中的 height: 20px;
和以下 Javascript:
似乎有效
var select = document.getElementById(select_id);
if (!select) console.error("no " + select_id);
var opts = select.getElementsByTagName('option');
var j = select.selectedIndex;
if (j == -1) return;
select.scrollTop = j * 20;
我得到 0
选项的 offsetHeight
但硬编码上述值似乎有效。
我试图让 HTML 多选 select
框滚动到第一个选择的选项,但我找不到任何方法。有办法吗?
<select id=s multiple>
<option value=0>One</option>
...
<option value=99 selected>Many</option>
</select>
您可以使用以下函数查找列表中第一个 selected 元素,然后将 select 框滚动到它。
确保在已经加载 selections 时调用该函数,通常是在 window.onload
事件上,但如果您正在填充 select ion与ajax调用,需要分别调用该函数(一旦selection已经到位)
// this is how you call the function, using the ID ("s") in your example:
window.onload = function(){
scrollToSelected( "s" )
}
function scrollToSelected( select_id ) {
var select = document.getElementById( select_id );
var opts = select.getElementsByTagName('option');
for ( var j = opts.length -1; j > 0; --j ) {
if ( opts.item(j).selected == true ) {
select.scrollTop = j * opts.item(j).offsetHeight;
return;
}
}
}
您可以使用以下行设置确切的滚动位置:
select.scrollTop = j * opts.item(j).offsetHeight;
...以上将尝试滚动,直到 selected 位于列表顶部。
感谢您的建议。
看来我不能post在评论中编码,所以我需要把它放在这里。 option
标签的 CSS 中的 height: 20px;
和以下 Javascript:
var select = document.getElementById(select_id);
if (!select) console.error("no " + select_id);
var opts = select.getElementsByTagName('option');
var j = select.selectedIndex;
if (j == -1) return;
select.scrollTop = j * 20;
我得到 0
选项的 offsetHeight
但硬编码上述值似乎有效。