javascript - 网站上仅切换一个“显示更多/显示更少”按钮,并具有多个具有相同 ID 的按钮

标签 javascript html bootstrap-4 toggle

当我单击“显示更多”按钮时,会显示更多图库图像,并且“显示更多”更改为“显示更少”。但是,由于我使用的是 ExpressionEngine (CMS) 模板和条目,因此页面上每个“显示更多”按钮的 id 都是相同的,导致其他按钮更改其 innerText 当它们没有被实际点击时的值。我需要我的代码来反射(reflect)仅单击一个按钮。

由于我使用的是 CMS 模板,因此我只想使用 HTML 和 JavaScript。

这是我的代码:

{if image:total>6}
<button class="btn btn-primary mx-auto" id="showMoreButton" type="button" data-toggle="collapse" data-target="#collapse-{embed:park_url}-{park_facilities_relate:url_title}" aria-expanded="false" aria-controls="collapseExample" onclick="showLess()">SHOW MORE</button>
{/if}       

<script>
    var status = "less";
    function showLess() {
        if (status == "less") {
            document.getElementById("showMoreButton").innerText = "SHOW LESS";
            status = "more";
        } else if (status == "more") {
            document.getElementById("showMoreButton").innerText = "SHOW MORE";
            status = "less"
        }
    }
</script>

实际发生的结果根据 script 标记的放置位置而有所不同(如果我将 script 标记放在 button 代码下面,如果 script 代码位于 button 代码上方)。这是正在发生的事情的图像:

enter image description here

最佳答案

要更改按钮文本,您可以使用该事件而不是 getElementById()。 为此,将 this 添加到按钮上的函数调用中。

onclick=”showLess(this)”

这样您就可以获得您实际单击的按钮的所有属性。在脚本中它可能看起来像:

function showLess(event) {      
   if (event.innerText == "SHOW MORE") {
        event.innerText = "SHOW LESS";
    } else if (event.innerText == "SHOW LESS") {
        event.innerText = "SHOW MORE";
    }
}

对画廊的实际展示一无所知,所以无法提供帮助,但这样至少按钮可以工作。

关于javascript - 网站上仅切换一个“显示更多/显示更少”按钮,并具有多个具有相同 ID 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58662811/

相关文章:

javascript - 如何使用 JQuery 删除 HTML 字符串中的所有 "script"标记?

Angular 垫自动完成框位于引导导航栏组件下方

css - Bootstrap 4 中的导航栏

javascript - Android:有没有办法从我的应用程序执行 JavaScript?

确保日期有效的Javascript方法

javascript - HTML 下拉菜单无法正常工作

html - 增加复选框大小

javascript - 使用 Bootstrap 4 进行全宽扩展的可扩展网格

javascript - Highcharts:不同屏幕尺寸断点上的渲染器定位问题

javascript - 在 html 页面之间移动