【发布时间】:2021-07-11 15:36:48
【问题描述】:
我正在使用 Python 中的 Dash 构建仪表板。我已经很好地配置了所有图表(它在server here 上运行),下一步是创建一个响应式导航栏和一个页脚。目前看起来像这样:
当我缩小宽度时,它看起来像这样:
我想为该按钮添加功能,以便在点击时隐藏三个链接。我正在尝试使用 JavaScript 和这段代码来切换 CSS 'active' 属性:
var toggleButton = document.getElementsByClassName('toggle-button')[0]
var navBarLinks = document.getElementsByClassName('navbar-links')[0]
function toggleFunction() {
navBarLinks.classList.toggle('active')
}
toggleButton.addEventListener('click', toggleFunction)
基本上,当navbar-links 类处于活动状态时,我希望将其设置为display: flex,而当它不活动时,我希望将其设置为display: none
在 Python 屏幕中定义的 HTML 元素在这里:
html.Nav([
html.Div('Covid-19 global data Dashboard', className='dashboard-title'),
html.A([html.Span(className='bar'),
html.Span(className='bar'),
html.Span(className='bar')],
href='#', className='toggle-button'),
html.Div(
html.Ul([
html.Li(html.A('Linked-In', href='#')),
html.Li(html.A('Source Code', href='#')),
html.Li(html.A('CSV Data', href='#'))
]),
className='navbar-links'),
], className='navbar')
我没想到通过 JavaScript 访问元素会出现问题。经过一番研究,我发现 JavaScript 在执行 getElementsByClassName 函数时返回值为 null。那是因为该功能是在呈现页面之前运行的(据我所知)。它给了我这个错误:
这个项目越来越大,所以我不知道我应该在这篇文章中包含哪些部分,但我会分享git repository和preview of the page。有没有简单的解决方法?
【问题讨论】:
-
我认为您需要创建一个在文档或窗口加载时间初始化的函数。 JS 可能在元素
toggle-button加载之前已经运行,因此出现“未定义错误”... -
我认为可以,但由于我的 JS 知识限制,我不知道如何在我的 JS 脚本中实现它
-
您可以为
load事件添加事件监听器。有关示例,请参见链接帖子 (link) 的第二个答案的第二个示例。您可以将问题中的代码放在 load 事件的处理程序函数中,这可能会起作用。 -
我不认为你需要这个 btw 的 javascript。你也可以通过 Dash 中的回调来实现。
标签: javascript python css plotly plotly-dash