我有大約10頁的HTML,每個都有一個鏈接到indexJS.js
。我在js文件中有一個功能loadMoreOnScroll()
,這個功能只適用於我的index.html
。但當用戶滾動到底部時,loadMoreOnScroll()
將在所有頁面上運行。頁面幾個HTML文件的特定JavaScript函數
如何限制loadMoreOnScroll()
只能運行index.html
?
我有大約10頁的HTML,每個都有一個鏈接到indexJS.js
。我在js文件中有一個功能loadMoreOnScroll()
,這個功能只適用於我的index.html
。但當用戶滾動到底部時,loadMoreOnScroll()
將在所有頁面上運行。頁面幾個HTML文件的特定JavaScript函數
如何限制loadMoreOnScroll()
只能運行index.html
?
添加類來區分頁面。
<body class="index">...
使用JavaScript:
if(document.body.className.match(/\bindex\b/)){
// code
}
的jQuery
:
if($("body").hasClass("index")){
// code
}
添加類的body
標籤上的索引,然後在JavaScript,你可以這樣做
if(document.querySelector('body').className === 'myclass'){
loadMoreOnScroll();
}
注:這裏假設你有一個對身體沒有其他類。您可以使用數據屬性並執行getAttribute('data-page')
或類似的效果。
您可以從indexJS中刪除loadMoreOnScroll()函數,並使用loadMoreOnScroll()創建一個新的JavaSscript文件。請確保在index.html中包含對新文件的引用。
我假設你從indexJS.js
文件中調用loadMoreOnScroll
,對嗎?
如果是這樣,解決方案是從您的JavaScript文件中刪除函數調用,而不是直接從index.html調用它。
indexJS.js
// Create the function but don't call it here
function loadMoreOnScroll(){...}
的index.html
<script src="indexJS.js></script>
<script>
// call the function
loadMoreOnScroll();
</script>
編輯:
其他幾個人建議增加體類和定位你的頁面的方式。這個方法是好的,而且在許多情況下可能會工作得很好,但一定要記住兩兩件事:
這非常適用,如果你需要調用只有一兩頁的功能。再者,你必須在indexJS.js
之內保持不斷增長的身體課程列表。
將主體類用作鉤子將函數調用從它適用的頁面中分離出來。
換句話說,正文類將具有綁定到它的功能,如果您只查看HTML,它不會立即顯而易見。如果您自己在編寫代碼,那麼您可能會確定,但在團隊環境中,它可能會出錯。 (或者如果您在幾個月後重新訪問代碼)。這完全取決於你的項目的範圍。