我有一个在我的index.html页面上运行随机单词生成器的函数,它工作得很好,但是当你在任何其他页面上时它也会继续运行(因为windows.onload)。
我不知道如何编写javascript来说明“只在index.html上运行这个函数,没有其他页面”或者“只在这个类上运行”。
window.onload = function refreshWord()
setInterval(function randomWord() {
const words = ['Engineer', 'Developer', 'Illustrator', 'Cyclist', 'Artist'];
const randomGenerator = Math.floor(Math.random() * words.length);
document.getElementById('textswap').innerHTML = words[randomGenerator];
}, 2000);
<div class="col">
<h4>These are the words, a <span class="front-page-text-swap" id="textswap"> person </span>.</h4>
</div>
我的最终目标是让函数refreshWord()
只在index.html页面上执行,而不是在其他页面上执行,但是我不知道如何做到这一点(我想使用普通的js,而不是jQuery)。
发布于 2018-07-07 10:36:21
您可以将仅在index.html
中需要的代码从所有页面共享的共享Javascript页面中提取出来,并将其放入<script>
标记中,该标记仅位于index.html
页面的HTML中,而不在任何其他页面中:
<script>
// insert this script only in the index.html page and
// directly inserted, not via a separate script file
window.onload = function refreshWord()
setInterval(function randomWord() {
const words = ['Engineer', 'Developer', 'Illustrator', 'Cyclist', 'Artist'];
const randomGenerator = Math.floor(Math.random() * words.length);
document.getElementById('textswap').innerHTML = words[randomGenerator];
}, 2000);
</script>
您还可以测试只存在于index.html
上的页面元素。因此,如果index.html
上只存在textswap
元素,那么您可以这样做:
window.onload = function refreshWord()
var textswap = document.getElementById('textswap');
// see if the textswap element exists in this page
if (textswap) {
setInterval(function randomWord() {
const words = ['Engineer', 'Developer', 'Illustrator', 'Cyclist', 'Artist'];
const randomGenerator = Math.floor(Math.random() * words.length);
textswap.innerHTML = words[randomGenerator];
}, 2000);
}
因此,只有当目标页面唯一的某个元素确实存在时,才会调用setInterval()
。
这种“内容检测”有时比URL测试更安全,因为它跟踪您想要的实际页面,而不是URL (可能会在某个时候更改)。
https://stackoverflow.com/questions/51219064
复制相似问题