javascript - 如何有效地多次使用切换按钮?

标签 javascript css toggle

我有以下页面,它的行为完全符合我的要求。

但是,我知道可以通过两种方式更有效地编写页面:

  1. 首先,也是最重要的,我要重复一个 javascript 函数。这是为了表示在单击特定按钮时应该展开哪些文本,但我知道这两者可以写成一个,因为它们共享相同类型的功能。
  2. 其次,CSS 很笨拙。我使用 !important 来覆盖文本是显示还是隐藏。

有人可以推荐这个页面最 Eloquent 翻译吗?

谢谢!

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.expand-button {
    background-color: #1860ac;
    color: white;
    border-radius: 5px;
    height: 30px;
    margin: 15px auto 40px auto;
    display: block;
    font-family: 'Cabin', sans-serif;
    font-size: 1em;
}
.hidden {
    display: none;
}
.very-hidden {
    display: none!important;
}
.mystyle {
    display: block!important;
}
</style>
</head>
<body>
<h2>
    First Paragraph
</h2> 
<button class="expand-button" id="b1" onclick="expand1()">Read more</button>
<span class="hidden" id="myDIV1"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu magna vitae ipsum dignissim euismod. Curabitur egestas congue elit vitae accumsan. Integer aliquet dictum est, vitae placerat arcu dapibus commodo. Quisque nec libero sed urna tristique mattis sed vel lacus. Praesent ut justo eget elit mattis suscipit. Curabitur ut libero eros. Morbi nec viverra velit. Suspendisse at nulla quis purus luctus laoreet. Nunc euismod ultricies quam vitae mattis. Fusce auctor urna at libero dapibus, sed sollicitudin ex facilisis. Maecenas ultricies nisl sodales lectus ultricies volutpat. Sed pretium turpis vitae dui tincidunt, ac sagittis ante efficitur.</p>
</span>
<h2>
Second Paragraph
</h2>
<button class="expand-button" id="b2" onclick="expand2()">Read more</button>
<span class="hidden" id="myDIV2">
<p>Nunc porttitor, quam vel consectetur feugiat, ipsum justo accumsan urna, non egestas ante ipsum in tellus. Maecenas pretium, velit dictum ultricies convallis, neque justo aliquet dolor, sed tincidunt massa ipsum at justo. Integer auctor auctor pretium. Ut in lacus ex. Suspendisse id placerat sapien, sed placerat dui. Curabitur eget malesuada arcu. Nam fringilla imperdiet mauris, at malesuada dolor tempor sit amet. Nam feugiat mi vel accumsan tristique. Curabitur imperdiet mollis mi vel consequat. Nam sollicitudin, elit sit amet tincidunt consectetur, sapien elit blandit lorem, at semper ipsum enim eget eros. Cras in ultrices dolor. Maecenas a lacus risus. Duis sed leo id est ultricies rhoncus ac sed ex. Fusce commodo consectetur nunc, sed lacinia sem.
</p>
</span>
<script type="text/javascript">
function expand1() {
   var element = document.getElementById("myDIV1");
   element.classList.toggle("mystyle");
   var element = document.getElementById("b1");
   element.classList.toggle("very-hidden");
}
function expand2() {
   var element = document.getElementById("myDIV2");
   element.classList.toggle("mystyle");
    var element = document.getElementById("b2");
   element.classList.toggle("very-hidden");
}
</script>
</body>

最佳答案

试试这个:

使用相同的 class 来隐藏元素,并使用相同的函数传递一个带有您正在单击的 div 编号的变量,这样你就可以构建 buttondivid 名称。

function expand(number) {
  var id = 'myDIV'+ number
   var divElement = document.getElementById(id);
   divElement.classList.toggle("mystyle");
   var idButton = 'b'+ number
   var button = document.getElementById(idButton);
   button.classList.toggle("hidden");
}
.expand-button {
    background-color: #1860ac;
    color: white;
    border-radius: 5px;
    height: 30px;
    margin: 15px auto 40px auto;
    display: block;
    font-family: 'Cabin', sans-serif;
    font-size: 1em;
}
.hidden {
    display: none;
}

.mystyle {
    display: block;
}
<body>
<h2>
    First Paragraph
</h2> 
<button class="expand-button" id="b1" onclick="expand('1')">Read more</button>
<span class="hidden" id="myDIV1"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu magna vitae ipsum dignissim euismod. Curabitur egestas congue elit vitae accumsan. Integer aliquet dictum est, vitae placerat arcu dapibus commodo. Quisque nec libero sed urna tristique mattis sed vel lacus. Praesent ut justo eget elit mattis suscipit. Curabitur ut libero eros. Morbi nec viverra velit. Suspendisse at nulla quis purus luctus laoreet. Nunc euismod ultricies quam vitae mattis. Fusce auctor urna at libero dapibus, sed sollicitudin ex facilisis. Maecenas ultricies nisl sodales lectus ultricies volutpat. Sed pretium turpis vitae dui tincidunt, ac sagittis ante efficitur.</p>
</span>
<h2>
Second Paragraph
</h2>
<button class="expand-button" id="b2" onclick="expand('2')">Read more</button>
<span class="hidden" id="myDIV2">
<p>Nunc porttitor, quam vel consectetur feugiat, ipsum justo accumsan urna, non egestas ante ipsum in tellus. Maecenas pretium, velit dictum ultricies convallis, neque justo aliquet dolor, sed tincidunt massa ipsum at justo. Integer auctor auctor pretium. Ut in lacus ex. Suspendisse id placerat sapien, sed placerat dui. Curabitur eget malesuada arcu. Nam fringilla imperdiet mauris, at malesuada dolor tempor sit amet. Nam feugiat mi vel accumsan tristique. Curabitur imperdiet mollis mi vel consequat. Nam sollicitudin, elit sit amet tincidunt consectetur, sapien elit blandit lorem, at semper ipsum enim eget eros. Cras in ultrices dolor. Maecenas a lacus risus. Duis sed leo id est ultricies rhoncus ac sed ex. Fusce commodo consectetur nunc, sed lacinia sem.
</p>
</span>

</body>

希望这对你有帮助:)

关于javascript - 如何有效地多次使用切换按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49867401/

相关文章:

javascript - 如何对字符串和对象使用 findIndex

javascript - 同一页面上有多个 scriptcam.js,相机无法加载/显示和拍照

javascript - 指针事件 : none for inside of div and pointer-events: all for outside (reverse mode of normal div) - walkthrough tour container

javascript - classList.add 有效,但切换不起作用

javascript - 删除切换的事件监听器方法

javascript - Firefox 忽略高度 : 100% css tag on div in favour of content

javascript - 使用 javascript/jquery 更改内联类 Style 属性

html - 表单样式 - 为什么我的输入会溢出表单?

css - class 和 id css 属性

javascript - rails : How to toggle a boolean field from a view?