私の目的は、各データエントリを個別にIdまたはNameでアドレス指定することなくテーブルの列の背景色を変更することです。私はこれを行ういくつかの方法があることを知っています、私は正確に3を試しました、そして、それぞれに問題があります。わかりやすくするために、この質問ではDOM内の element.style.backgroundColorオブジェクトを使用して正常に実行する方法を尋ねています。ここに私のHTMLです:DOMスタイルを使用してJavascriptでCSSクラスプロパティを取得または変更する
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="tester.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="tester.js"></script>
</head>
<body>
<button type="button" onClick="testerFunction()">Test</button>
<table>
<tr>
<th class="col1">Column 1 Header</th>
<th class="col2">Column 2 Header</th>
</tr>
<tr>
<td class="col1">R1 C1</td>
<td class="col2">R1 C2</td>
</tr>
<tr>
<td class="col1">R2 C1</td>
<td class="col2">R2 C2</td>
</tr>
</table>
</body>
</html>
私のCSSファイル:
.col1{
background-color:lime;
}
そして、私のJavascriptファイル:私はそれを実行すると
function testerFunction() {
alert (document.getElementsByClassName('.col1').style.backgroundColor);
}
は、私は大体IE、Firefoxで同じエラーを取得し、クロム:
未定義の 'backgroundColor'プロパティを読み取ることができません。
document.getElementsByClassName DOMオブジェクトから返されるデータ型と何か関係があります。参照されるWebサイトには、HTMLコレクションが返されると記載されています。私が見つけた他の場所は、要素の「リスト」を返します。配列を作成して配列に結果を代入し、配列内の各要素にループでアクセスしようとしましたが、同じ場所で同じエラーが発生しました。それは、私が "コレクション"を扱う方法を知らないだけかもしれない。いずれにせよ、私はCSSファイルで定義した "lime"またはhexまたはrgb相当のファイルを期待していました。私はJavascriptでそれを変更できるようにしたい。どんな助けでも大歓迎です。ありがとう!
EDIT:「」
それをよりモジュラー作るためにShylo花の回答に引数を追加しましたfunction testerFunction() {
changeColumnColor('col1','blue');
}
function changeColumnColor(column,color) {
var cols = document.getElementsByClassName(column);
for(i=0; i<cols.length; i++) {
cols[i].style.backgroundColor = color;
}
}
チェックアウトこれを:http://api.jquery.com/css/ –
@ shyloの答えが正しいか、のgetElementsByClassNameは間違いない「スタイル」プロパティ – xiaowl