javascript - 我怎样才能使用超过 2 个部分的这个 JavaScript 代码?
问题描述
我是 javascript 和 Html 的新手,我创建了两个滚动按钮从 section1 到 section2。如果我需要有两个以上的部分,我该怎么办?
function f1() {
var elmnt1 = document.getElementById("sez1");
elmnt1.scrollIntoView();
}
function f2() {
var elmnt2 = document.getElementById("sez2");
elmnt2.scrollIntoView();
}
解决方案
最好的方法是为任何解决方案创建一个模式,使其成为通用解决方案。
- 使用您喜欢的属性标记您的部分,例如:scroll-to-id="1",您的部分现在看起来像
<div scroll-to-id="1"></div><div scroll-to-id="2"></div><div scroll-to-id="3"></div><div scroll-to-id="4"></div>
- 现在创建一个函数,它将数字作为输入并滚动到所需的部分。要获取所有目标部分,我们可以调用该函数
document.querySelectorAll('[scroll-to-id]')
来获取具有属性 scroll-to-id 的所有元素。 - 然后找到所需的元素
scroll-to-id
并滚动到该元素。
完整解决方案如下:
function scrollToSection(sectionId) {
const sections = document.querySelectorAll('[scroll-to-id]');
for(let section of sections) {
if(section.getAttribute('scroll-to-id') == sectionId) {
section.scrollIntoView();
// scrollIntoView doesnot have the best browser supports. It is better to calculate the position of the section and do a scrollTo() or scrollBy()
}
}
}
button {
margin-bottom: 20px;
}
div {
padding-top: 80px;
padding-bottom: 80px;
border: 1px solid #cecece;
}
<button onclick="scrollToSection(1)">Scroll To 1</button>
<button onclick="scrollToSection(2)">Scroll To 2</button>
<button onclick="scrollToSection(3)">Scroll To 3</button>
<button onclick="scrollToSection(4)">Scroll To 4</button>
<div scroll-to-id="1">Hello 1</div>
<div scroll-to-id="2">Hello 2</div>
<div scroll-to-id="3">Hello 3</div>
<div scroll-to-id="4">Hello 4</div>
推荐阅读
- r - R中跨多个UTM区域的投影
- asp.net-mvc - 通过来自 IdentityServer 4 的 OpenId 进行 MVC 角色授权
- javascript - 测试函数中的while循环在Jest中只执行一次
- python-3.x - 如何从 BeautifulSoup 对象分解和平滑标签?
- c - 抛出异常:读取访问冲突。pn 为 0x2。在 C 中使用 GTK 时
- javascript - TypeScript - 根据另一个函数的返回类型推断函数的参数类型
- security - 创建 VMware 来宾的原始磁盘映像的最简单方法是什么?
- flutter - 嵌套的 if 和 else 语句在 Flutter 或 dart 中如何工作?
- sql - 不能在黑斑羚中使用
- ios - 从闭包内部快速添加 VC 不起作用