對暴虐的版主和惡霸:我知道以前有人問過類似的問題,但是由于它是一個問答網站,我不敢再問一次,因為我的不起作用。
致真正的貢獻者:我有幾行 JS 代碼,它們從不同的部分中提取標題文本并將它們放入各自的輸入欄位中。它們也使用wp_enqueue_script. 事情是這樣的:使用時它作業得很好setTimeout():
function passengerElevator() {
var getProductName = document.querySelectorAll('[data-id="6657316"]');
getProductName.forEach(function(item) {
var productName = item.querySelector('.lift');
var inputArea = item.querySelector('input[name=product]');
inputArea.value = productName.innerText;
});
var getProductName = document.querySelectorAll('[data-id="e9c06d5"]');
getProductName.forEach(function(item) {
var productName = item.querySelector('.lift');
var inputArea = item.querySelector('input[name=product]');
inputArea.value = productName.innerText;
});
setTimeout(function() { passengerElevator() },3000);
但是,頁面大小存在問題(有些頁面有 10 個以上的輸入欄位),我不想設定天文數字ms來延遲腳本。所以我決定開火DOMContentLoaded
document.addEventListener("DOMContentLoaded", passengerElevator);
function passengerElevator() {
var getProductName = document.querySelectorAll('[data-id="6657316"]');
getProductName.forEach(function(item) {
var productName = item.querySelector('.lift'); // heading text (ex:Panoramic Lift)
var inputArea = item.querySelector('input[name=product]');
inputArea.value = productName.innerText; //ouput here
});
var getProductName = document.querySelectorAll('[data-id="e9c06d5"]');
getProductName.forEach(function(item) {
var productName = item.querySelector('.lift'); // heading text (ex:Home Lift)
var inputArea = item.querySelector('input[name=product]');
inputArea.value = productName.innerText; //ouput here
});
}
正如您可能已經猜到的那樣,它不起作用。我的代碼是否太亂而無法更快地執行,還是我遺漏了任何其他問題?
uj5u.com熱心網友回復:
似乎您嘗試回圈尚未加載的元素,也許它們是通過 ajax 附加到頁面的,因此無能為力DOMContentLoaded。
您可以使用 為這些元素創建自己的檢查setInterval,例如這樣。
let dataIdCheck = setInterval(() => {
if (document.querySelectorAll('[data-id="6657316"]').length > 0 && document.querySelectorAll('[data-id="e9c06d5"]').length > 0) {
clearInterval(dataIdCheck);
// your code here
}
}, 500);
此代碼將每 500 毫秒運行一次并檢查這兩個元素是否存在,使用.length,一旦它們存在,我們就停止間隔并運行代碼。
我還建議console.log('in')在找到元素后檢查我們的時間間隔是否停止運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/368422.html
標籤:javascript WordPress的 事件处理 设置超时 添加事件监听器
上一篇:檢查組件中定義的資料
下一篇:為什么React找不到這個檔案?
