2017-09-05 20 views
-1

フォームを作成する外部JSを読み込み、入力の1つのプレースホルダを変更したい。 フォームを含むdivの直後に関数を記述しようとし、名前またはクラスで入力をターゲットにします。 多分それは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>
のために作成するために変更するためにあなたが MutationObserverを使用して聴くことができ

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

プレースホルダを変更しようとすると、フォームがすでに作成されていますか?おそらく、ウィジェットがロードされる前にそれを変更しようとします。 –

+0

@Quentin、フォームは外部から作成されますが、ポイントは有効です – Satpal

答えて

0

...プレースホルダの変更を防ぐだけでロードされたスクリプトです

注:squeezer-widget-input-codeセレクタとは要素がありませんが、そのためsqueezer-widget-input

DOはこれがの複製であるWhat do querySelectorAll, getElementsByClassName and other getElementsBy* methods return?

+0

@Satpalに感謝します。その作品はMutationObserveであり、私は属性の突然変異を観察し、squeezer-widget-input-codeのプレースホルダを変更します。最初の入力) – Sam

関連する問題