2017-09-05 42 views
-1

我加載一個外部的JS創建一個窗體,我想改變其中一個輸入的佔位符。 我嘗試在包含表單的div的後面寫入函數,並通過名稱或類來定位輸入。 也許這只是加載腳本,防止佔位的變化......如何更改外部加載的表單的佔位符?

document.getElementsByClassName('squeezer-widget-input-code').placeholder = 'Enter your Code';
<script type="text/javascript" src="https://dl.squeezer.fr/widget"></script> 
 
<div class="squeezer-widget"></div>

+0

這是一個重複的https://stackoverflow.com/questions/10693845/what-do-queryselectorall-getelementsbyclassname-and -other-getelementsby-method – Quentin

+0

如果在嘗試更改佔位符時已經創建了表單,則已創建?也許你會在加載widget之前嘗試改變它。 –

+0

@Quentin,表格是使用外部創建的,但是您的觀點是有效的 – Satpal

回答

0

您可以使用MutationObserver和監聽DOM創造改變爲<FORM>

var MutationObserver = window.MutationObserver; 
 
var list = document.querySelector('.squeezer-widget'); 
 

 
var observer = new MutationObserver(function(mutations) { 
 
    mutations.forEach(function(mutation) { 
 
    if (mutation.type === 'childList') { 
 
     var elem = document.querySelector('.squeezer-widget-input'); 
 
     if (elem != null) 
 
     document.querySelector('.squeezer-widget-input').placeholder = 'Enter your Code';  
 
    } 
 
    }); 
 
}); 
 

 
observer.observe(list, { 
 
    attributes: true, 
 
    childList: true, 
 
    characterData: true 
 
});
<script type="text/javascript" src="https://dl.squeezer.fr/widget"></script> 
 
<div class="squeezer-widget"></div>

注意:有是squeezer-widget-input-code選擇沒有元素,因此使用squeezer-widget-input

務必閱讀What do querySelectorAll, getElementsByClassName and other getElementsBy* methods return?

+0

感謝很多@Satpal,它與'MutationObserve'的作品,我只是觀察屬性的變化並改變squeezer-widget-input-code的佔位符(這是第一個輸入) – Sam

相關問題