我正在用python中的dash构建 Jmeter 板。我已经很好地配置了所有的图形(它在这里的服务器上运行),下一步是创建响应的导航栏和页脚。目前看起来是这样的:
当我缩小宽度时,它看起来是这样的:
我想给这个按钮添加功能,这样它会在点击时隐藏三个链接。我尝试使用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
函数返回的值为空。这是因为函数是在呈现页面之前运行的(据我所知)。它给了我这个错误:
这个项目越来越大,所以我不知道我应该在这篇文章中包括哪些部分,但我将分享git存储库和页面预览。有没有简单的解决办法?
2条答案
按热度按时间z9smfwbn1#
dash回调解决方案(无javascript):
上面代码的思想是
toggle-button
单击作为Input
以及navbar-links
作为State
. 我们可以使用此状态来确定是否应添加active
类或删除它。新的className
值在回调中返回。javascript解决方案:
加载整个页面(包括样式表和图像等所有相关资源)时,将触发加载事件。这与domcontentloaded形成对比,domcontentloaded在页面dom加载后立即启动,而不等待资源完成加载。
https://developer.mozilla.org/en-us/docs/web/api/window/load_event
DOMContentLoaded
最好使用,但它只适用于我load
.lokaqttq2#
您可以推迟javascript代码的执行,直到通过
DeferScript
来自 Jmeter 板扩展的组件。这是一个小例子,