【发布时间】:2021-03-01 17:04:04
【问题描述】:
我为 MDC 滑块 (https://material.io/develop/web/components/sliders) 创建了一个 DOM 元素。
看起来不错(除了颜色)。它可以工作,但我真的不知道如何初始化它。
我从 CDN 导入 MDC。我无法从文档中了解如何进行初始化。这是一个有效的版本:
setTimeout(() => { slider = new mdc.slider.MDCSlider(eltSlider) });
没有setTimeout,它不起作用。
我已经尝试使用 Promise 来代替,请稍等。那是行不通的。
甚至可能更糟:如果我在 setTimeout 之后使用 Promise 等待它不再起作用。
发生了什么事,我应该怎么做?
我不使用 ts。而且我不使用任何包处理程序。只是普通的 JavaScript。 (如果文档首先介绍了这个用例,我会很高兴。)
(这里似乎只有一个关于 MDCSlider 的问题。它不包括我的问题:actual use of foundation and adapter class of mdc-components)
编辑:“从 CDN 导入”是指此处提到的设置:https://material.io/develop/web/docs/getting-started
<link href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" rel="stylesheet">
<script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.js"></script>
没有 JavaScript 错误。只是屏幕上的滑块不起作用。 (看起来还可以,但是不行。)
我认为这是 MDC 和 DOM 状态的问题。上面链接中的示例表明 DOM 已准备好,但它并没有这么说。并且它没有解释在使用 JavaScript 操作 DOM 时如何检查这一点。
【问题讨论】:
-
必须等到依赖加载完毕。
-
@canbax 谢谢。我怎么做?我怎么知道?
-
您说“我从 CDN 导入 MDC”。不知道你是怎么导入的。但是你应该等到你的依赖项被加载。
-
@canbax 我编辑了问题以使其更清楚。感谢您的建议,但不是那种问题。
-
最好是最小可重复的样本。
标签: javascript web material-components material-components-web