我一直遇到一些奇怪的问题,javascript在我的本地开发tomcat服务器提供的jsp页面中运行不正常。这很奇怪,因为如果我将相同的源粘贴到文本文件中,另存为jsp,并从桌面打开它可以很好地工作。
我已将所有内容切换回以下代码:
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
var intervalId = setInterval(function(){
console.log('interval running...');
document.getElementById('interval-status').textContent = ('Interval Running...');
}, 1000);
console.log('Interval Created: ' + intervalId);
document.getElementById('interval-status').textContent = ('Interval Created: ' + intervalId);
</script>
<span id='interval-status'></span>
</body>
</html>
以上粘贴到桌面上的jsp文件中并使用浏览器打开,此页面显示“Interval Running ...”,控制台显示相同的内容。一切都好!
当这个页面从tomcat(作为jsp文件)提供时,我得到TypeError: Document.getElementById(...) is null
。好的,所以我将脚本移动到跨度下方,页面加载成功。但是它只显示“Interval Created:2”,控制台显示相同的内容。该间隔实际上并不执行其回调。
所以,问题:
1)为什么脚本在从tomcat提供时必须低于跨度,而不是我的桌面?
2)为什么通过jsp / tomcat服务时间隔不运行?这可能与问题1有关吗?
编辑:通过Edge和Chrome加载时,它似乎正常工作。不是Firefox(54.0.1 32位)。必须与浏览器相关......