gpt4 book ai didi

javascript - javascript中函数的含义是什么?

转载 作者:行者123 更新时间:2023-11-29 18:34:01 27 4
gpt4 key购买 nike

  function ExChgClsName(Obj,NameA,NameB){
var Obj=document.getElementById(Obj)?document.getElementById(Obj):Obj;
Obj.className=Obj.className==NameA?NameB:NameA;
}

<a href="javascript:showMenu(2);">

我是js新手。所以不能很好的理解上面两个函数。希望有人能一一向我解释这句话的意思。非常感谢。

最佳答案

对于第一个函数

    var Obj=document.getElementById(Obj)?document.getElementById(Obj):Obj;

如果 Obj 是作为 DOM 元素 ID 的字符串,则第一行通过其 ID 获取对象。否则,它将单独保留 Obj 的值。这是使用“三元条件”运算符 a? b: c。如果 a 为真,则作为 b 的值,否则为 c。这样做允许函数接受字符串或 DOM 元素。

    Obj.className=Obj.className==NameA?NameB:NameA;

如果 DOM 元素的 CSS 类是 NameA,下一行将最后一行 DOM 元素的 CSS 类设置为 NameB,否则设置为 名称A。只要从未将另一个类分配给该元素,这就会产生换出类的效果。如果将另一个类 分配给该元素,则它将再次以 NameA 开始循环。

function showMenu(iNo){
ExChgClsName("Menu_"+iNo,"MenuBox","MenuBox2");
}

第二个函数只是应用第一个函数在“MenuBox”和“MenuBox2”之间交换 ID 为 "Menu_"+iNo 的 DOM 元素的 CSS 类。


就我个人而言,我不喜欢第一个函数的第一行,因为它对 DOM 进行了两次搜索,而它只需要执行一次。我会这样做

 var Obj = document.getElementById(Obj) || Obj;

这应该在所有实现上都更有效率,并且肯定更具可读性。它使用 || 运算符作为守卫,仅当 document.getElementById 返回 null 时,才将 Obj 赋值给自己>.

关于javascript - javascript中函数的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5112951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com