2017-10-31 1 views
-2

"name"属性で要素を選択しようとしていますが、機能しません。JavaScriptを使用してインラインCSSスタイルを要素に設定するにはどうすればよいですか?

VM777:1キャッチされない例外TypeError:

var test = document.getElementsByName("parameterstest")[0].tagName; 
test.style.display='none'; 

ITSは、このコードのように思えるはずです。

未定義私のコードの 'tagNameを' はプロパティを読み取ることができませんコンソールでは、私はTEH、次のエラーが表示されますChromeコンソールで実行すると機能します

+4

がまったく機能しない場合には、 '.tagName'プロパティは文字列を返します、あなたは、文字列の' .style'プロパティを呼び出すことはできません... –

+0

は、なぜあなたもtagName'を開始する必要があります 'と? – j08691

+0

なぜdownvotesがわからないのですか?私はテストし、私の発見と私の答えを書いた。 – Mariton

答えて

2

document.getElementsByName("parameterstest")[0].tagName;と書くと、その要素のタグ名を含む文字列が返されます。その文字列にスタイルプロパティを適用する方法はありません。人々は「TEXTAREA」のように、タグ名の文字列を返す.tagNameを使用して、指摘したようにあなたは、だから、

var test = document.getElementsByName("parameterstest")[0]; 
test.style.display='none'; 
0

をする必要があります。このdocument.getElementsByName("parameterstest")[0]

のように検索された要素にスタイルプロパティを使用することができますまたは "DIV"であり、文字列にスタイルを設定することはできません。

あなたがしたいように見えるのは、選択したすべての種類のものにスタイルを設定することです。個々の項目で行うことができます。

document.getElementsByName("parameterstest")は、0個以上の項目の配列を返します。 <input type="text" name="...">のようなものは、1つのアイテムになる可能性があります。 <input type="radio" name="...">の場合、いくつかのアイテムになる可能性があります。

返されるアイテムの数にかかわらず、配列の.forEachメソッドを使用すると、すべてのアイテムに何かを適用できます。

document.getElementsByName('parameterstest') 
     .forEach(function(el) { 
        el.style.display = 'none'; 
       }); 
関連する問題