javascript - 减少 A 到 Z 字母组的函数数量

标签 javascript function

https://prnt.sc/21vc411 正如您在链接上看到的那样,当我单击左侧或右侧的一个字母时,该字母应该消失并且应该转到另一侧。例如,当我单击左侧的“A”字母时,它会向右移动。我在每一侧创建了一个字母,默认情况下右侧的显示为“无”。因此,当我单击左侧的那个时,以下功能将启动;

function myFunction() {
document.getElementById("aLetterLeftSide").style.display="none";
document.getElementById("aLetterRigtSide").style.display="inline-block";
}       

它有效,但我必须对每个具有不同 ID 的字母执行此操作。所以大约有 50 个函数 :( 有没有办法将其缩短为更少的函数?谢谢您的回答 :)

最佳答案

您正在使用 Element ids 将您的函数绑定(bind)到您的元素(MDN 网络文档链接)。当你有一堆需要相同功能的元素时,只需使用 Element ClassName 绑定(bind)它们即可。 (MDN Webdocs 链接)代替。

在下面的示例中,我简单地将 class 的字母定义为 letter-span,然后设置 onclick (MDN Webdocs 链接)属性迭代...

var letterspans = document.getElementsByClassName("letter-span");

var onclickfunc = function(e) {
  if(this.style.float) {
    this.style.float = '';
  } else {
    this.style.float = 'right';
  }
};

for(i = 0; i < letterspans.length; i++) {
  letterspans[i].onclick = onclickfunc;
}
<span data-letter="a" class="letter-span">A</span> | 
<span data-letter="b" class="letter-span">B</span> | 
<span data-letter="c" class="letter-span">C</span> | 
<span data-letter="d" class="letter-span">D</span> 

注意

以上是完整的、可运行的独立演示(请注意:Minimal Reproducible Code)。在这种情况下,我做了 if(this.style.float){this.style.float = '';您可能需要不同的条件和 setter ,也许 if(this.classList.contains('rightside')) {..this.classList.add('rightside') 以及 this.classList.remove('rightside')。我没有这样做,因为我想要在演示中完全重现的东西。

关于javascript - 减少 A 到 Z 字母组的函数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70236239/

相关文章:

javascript - 如何在运行 Mocha 测试之前应用 jadeify 变换?

c++ - 如何插入变量类型作为参数函数?

Python 类关闭 : Is It What It Called?

c - 定义 C 函数数组

javascript - 有没有可以处理非常大的数字的 JavaScript 解释器?

javascript - 如何在 HTML5 Canvas 中正确创建带边框的线

javascript - 访问加载时 ajax 请求返回的数据

javascript - 为什么我的 HighCharts 图表无法呈现?

c - 数组元素交换函数

function - 如何使用CouchDB中的更新功能上传附件