2017-05-02 10 views
0

私はプレースホルダテキストとして機能するようにGoogleカスタム検索入力要素の前に「ラベル」要素を配置しようとするのinsertBefore()を使用していますが、私の現在のコードで、私はエラーを取得しています:「プロパティを読み取ることができません 『のinsertBefore』未定義の"ここに私のコードは次のとおりです。にはどうすればGoogleカスタム検索入力要素の前にラベル要素を挿入することができますか?

window.onload = function() { 
     var el = document.getElementById('gsc-i-id1'); 
     el.setAttribute('placeholder', 'Enter your search term...'); 
     el.style.background = ''; 
     el.style.textIndent = '0'; 
     el.addEventListener('blur', function(e) { 
      e.target.style.backgroundImage = 'none'; 
      e.target.style.textIndent = '0'; 
      }, false); 

<!-- create absolutly positioned label as placeholder text for search --> 
     var searchParent = el.parentNode; 
     var label = document.createElement('label'); 
     var labelText = document.createTextNode('Enter your search term...'); 
     label.appendChild(labelText); 
     label.className += 'search-label-placeholder'; 
     console.log(searchParent); 
     console.log(label); 
     console.log(el); 
     document.searchParent.insertBefore(label, el); 

<!-- this doesn't work for adding a placeholder -->  
     var searchIcon = document.getElementById('search-icon'); 
     searchIcon.addEventListener('click', function(e) { 
       e.preventDefault(); 
       el.focus(function() { 
       el.setAttribute('placeholder', 'Enter your search term...'); 
       }); 
      }, false); 
     }; 
    </script> 

答えて

0

ソリューションのinsertBeforeを(使用している場合代わりに、文書の親要素を使用していました) 。

searchParent.insertBefore(label, el); 
0

は、このラインにこれ​​に

document.searchParent.insertBefore(label, el); 

を交換してみてください:

document.insertBefore(label, searchParent); 
+0

エラー:ドキュメント上の1つの要素のみが許可されます。 – svoltmer

関連する問題