【问题标题】:How can I compress all of these function into one function - Javascript [closed]如何将所有这些函数压缩为一个函数 - Javascript [关闭]
【发布时间】:2013-05-25 15:28:24
【问题描述】:

当我点击锚标记时,这段代码会出现额外的段落,但我不希望所有这些函数都变得混乱我想知道如何将这段代码压缩成一个函数我不介意 jquery,但我会更喜欢 javascript,但只做更高效的事情。

    function showmore1()
            {
                var more_1 = document.getElementById("learnmore_1");
                if (more_1.style.display == "block") 
                {
                    more_1.style.display = "none";
                    document.getElementById('showmore_1').innerHTML ='<a>Even More History</a>';
                }
                else 
                {
                    more_1.style.display = "block";
                    document.getElementById('showmore_1').innerHTML ='<a>Show Less</a>';
                }
                }
    function showmore2()
            {
                var more_2 = document.getElementById("learnmore_2");
                if (more_2.style.display == "block") 
                {
                    more_2.style.display = "none";
                    document.getElementById('showmore_2').innerHTML ='<a>Even More Why programming</a>';
                }
                else 
                {
                    more_2.style.display = "block";
                    document.getElementById('showmore_2').innerHTML ='<a>Show Less</a>';
                }
                }
    function showmore3()
            {
                var more_3 = document.getElementById("learnmore_3");
                if (more_3.style.display == "block") 
                {
                    more_3.style.display = "none";
                    document.getElementById('showmore_3').innerHTML ='<a>Even More Skills</a>';
                }
                else 
                {
                    more_3.style.display = "block";
                    document.getElementById('showmore_3').innerHTML ='<a>Show Less</a>';
                }
            }
    function showmore4()
            {
                var more_4 = document.getElementById("learnmore_4");
                if (more_4.style.display == "block") 
                {
                    more_4.style.display = "none";
                    document.getElementById('showmore_4').innerHTML ='<a>Even More Accomplishments</a>';
                }
                else 
                {
                    more_4.style.display = "block";
                    document.getElementById('showmore_4').innerHTML ='<a>Show Less</a>';
                }
            }

【问题讨论】:

标签: javascript function show-hide


【解决方案1】:

提取函数内部发生变化的代码位(变量),然后组合功能并将变量传递给要插入的函数。

function showmore(id, more, less) {
    var more = document.getElementById('learnmore_'+id);

    if(more.style.display == "block") {
        more.style.display = "none";
        document.getElementById('showmore_'+id).innerHTML ='<a>'+more+'</a>';
    } else {
        more.style.display = "block";
        document.getElementById('showmore_'+id).innerHTML ='<a>'+less+'</a>';
    }
}

然后像这样使用它:

showmore(1, 'Even more accomplishments', 'Show less');

【讨论】:

  • 切换时给我的一个小问题是 undefined 和 [object HTMLDivElement] 作为更改后的名称
【解决方案2】:
 function showmore(id, moreMessage, lessMessage)
        {
            var more = document.getElementById('more'+id);
            if (more.style.display == "block") 
            {
                more.style.display = "none";
                document.getElementById('showmore_'+id).innerHTML ='<a>'+moreMessage+'</a>';
            }
            else 
            {
                more.style.display = "block";
                document.getElementById('showmore_'+id,).innerHTML ='<a>'+lessMessage+'</a>';
            }
        }

【讨论】:

    【解决方案3】:

    也许这项工作我不测试它

    function showmore(number,moreMessage,lessMessage)
    {
        var more = document.getElementById("learnmore_"+number);
        if (more.style.display == "block") 
        {
            more.style.display = "none";
            document.getElementById('showmore_'+number).innerHTML ='<a>'+moreMessage+'</a>';
        }
        else 
        {
            more.style.display = "block";
            document.getElementById('showmore_'+number).innerHTML ='<a>'+lessMessage+'</a>';
        }
    }
    

    【讨论】:

    • 不像其他 2 个答案那样适合锚点的不同措辞
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2013-01-17
    • 2022-11-07
    相关资源
    最近更新 更多