javascript - 使用动态 innerHTML 更改处理按钮 mdl-js 样式

标签 javascript html css material-design-lite

改变 <button> innerHTML 似乎停用了 mdl-js-ripple-effect。 使用方法 mentioned here动态构建一个新元素作为解决方法或将其报告为错误?

<body>
    <button id="myButton" class="mdl-button mdl-js-button mdl-js-ripple-effect">OLD VALUE
    </button>
</body>

JS:

window.addEventListener("load", () => {
  document.getElementById("myButton").innerHTML = "new value";

});

http://codepen.io/anon/pen/KVvMOE

尝试了 componentHandler.upgradeElement(button)在设置新 html 后在现有元素上,但如文档中所述,它仅适用于新元素。尝试重用现有元素。

最佳答案

我在组件被MDL脚本解析和升级的时候,在外节点添加了很多额外的属性,在内部添加了额外的HTML。这意味着设置 innerHTML 将删除内部的一些必要标记,并且 upgradeElement 将由于添加到外部节点的标记而失败。

您应该先尝试使用 componentHandler.downgradeElements 降级按钮,然后设置 innerHTML,然后调用 componentHandler.upgradeElement

一些未经测试的示例代码:

function setText(element,newtext){
    componentHandler.downgradeElements(element);
    element.innerHTML=newtext;
    componentHandler.upgradeElement(element);
}
setText(document.getElementById('myButton'),'new value');

关于javascript - 使用动态 innerHTML 更改处理按钮 mdl-js 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34762689/

相关文章:

javascript - 为什么当我将溢出属性设置为隐藏时,伪元素就会消失?

javascript - ''Creative Loading Effects' ' 页面加载时加载演示?

javascript - 尝试从另一个数组创建重复值的数组,为什么我的代码不起作用?

javascript - 我如何传播命名参数?

Javascript Joi 替代方案数组或对象数组

html - bgcolor 属性不适用于 Bootstrap

javascript - 根据内容和浏览器宽度更改 div 宽度

javascript - 不可见的内容没有像预期的那样隐藏

javascript - audio.play() 不是函数。

javascript - 如何使用 Javascript 禁用和启用按钮