JavaScript 不会 运行,表示元素为空,但代码 运行s 在 fiddle
JavaScript won't run, says element is null, but code runs in fiddle
我正在使用 java 配置构建 thymeleaf 和 spring 项目。当我在 jsfiiddle 中尝试这段代码时它工作正常,但是当我在我的应用程序中尝试 运行 时我得到这个:
TypeError: document.getElementById(...) is null
.
javascrips 的导入没有任何问题,源代码渲染了它们,html 就好了。
代码:
HTML:
<a href="#" id="buybutton" th:id="buybutton" th:text="#{cart.buy}">Buy</a>
JavaScript:
document.getElementById('buybutton').addEventListener("click", function(e){
console.log("bought");
});
Thymeleaf 配置(如果它很重要):
@Configuration
public class ThymeleafConfig {
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/pages/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
resolver.setCacheable(false);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
}
您应该仅在 DOM 准备就绪时添加点击事件。
注意: 在 jsfiddle 的情况下,这是 默认行为 。
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById('buybutton').addEventListener("click", function(e){
console.log("bought");
});
});
我正在使用 java 配置构建 thymeleaf 和 spring 项目。当我在 jsfiiddle 中尝试这段代码时它工作正常,但是当我在我的应用程序中尝试 运行 时我得到这个:
TypeError: document.getElementById(...) is null
.
javascrips 的导入没有任何问题,源代码渲染了它们,html 就好了。
代码:
HTML:
<a href="#" id="buybutton" th:id="buybutton" th:text="#{cart.buy}">Buy</a>
JavaScript:
document.getElementById('buybutton').addEventListener("click", function(e){
console.log("bought");
});
Thymeleaf 配置(如果它很重要):
@Configuration
public class ThymeleafConfig {
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/pages/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
resolver.setCacheable(false);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
}
您应该仅在 DOM 准备就绪时添加点击事件。
注意: 在 jsfiddle 的情况下,这是 默认行为 。
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById('buybutton').addEventListener("click", function(e){
console.log("bought");
});
});