javascript DOM:ID名 クラス名を操作する。

Quick Edit Pencil

/*-------------------------------------------

BiNDスタイルを除去

-------------------------------------------*/

var removeBiNDstyles = [ 'layout-css', 'options-css', 'theme-css', 'page-css' ];

for (var i = 0; i < removeBiNDstyles.length; i ++) {

var Botan = document.getElementById(removeBiNDstyles[i]);

Botan.parentNode.removeChild(Botan);

}

 

/*-------------------------------------------

<body> id class 属性の追加

-------------------------------------------*/

window.onload = function(){

// クラスを追加

if(user_bodyclass){

add_class_name(document.getElementsByTagName('body')[0],user_bodyclass);}

//idを追加

if(user_bodyid){

add_id(document.getElementsByTagName('body')[0],user_bodyid);}

}

 

function add_class_name(obj,add_classes){

  var tmp_hash = new Array();

  var new_class_names = new Array();

  var class_names = obj.className.split(" ").concat(add_classes.split(" "));

  for(var i in class_names){if(class_names[i] != ""){tmp_hash[class_names[i]] = 0;}}

  for(var key in tmp_hash){new_class_names.push(key);}

  obj.className = new_class_names.join(" ");

}

 

function add_id(obj,add_id){

  var tmp_hash = new Array();

  var new_id_names = new Array();

  var id_names = obj.id.split(" ").concat(add_id.split(" "));

  for(var i in id_names){if(id_names[i] != ""){tmp_hash[id_names[i]] = 0;}}

  for(var key in tmp_hash){new_id_names.push(key);}

  obj.id = new_id_names.join(" ");

}

 

DOM:クラス名を操作する。

指定した要素のクラス名は「element.className」で取得・変更できる。
で、元々設定されているクラス名に追加、削除する関数を作ってみました。


追加 function add_class_name(obj,add_classes)

function add_class_name(obj,add_classes){
  var tmp_hash = new Array();
  var new_class_names = new Array();
  var class_names = obj.className.split(" ").concat(add_classes.split(" "));
  for(var i in class_names){if(class_names[i] != ""){tmp_hash[class_names[i]] = 0;}}
  for(var key in tmp_hash){new_class_names.push(key);}
  obj.className = new_class_names.join(" ");
}

削除 function delete_class_name(obj,delete_classes)

function delete_class_name(obj,delete_classes){
  var new_class_names = new Array();
  var class_names = obj.className.split(" ");
  var delete_class_names = delete_classes.split(" ");
  for(var i in class_names){
    var flag = true;
    for(var j in delete_class_names){
      if(class_names[i] == delete_class_names[j]){flag = false;break;};
    }
    if(flag){new_class_names.push(class_names[i])}
  }
  obj.className = new_class_names.join(" ");
}

JavaScriptメモ - DOM

DOMについてここにメモしていきます。

 「document.getElementById( ID )」でHTMLの要素につけたIDからその要素のオブジェクトを取得できます。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>DOMテスト</title>
</head>

<body>

<p id="targetElement">
 DOMの実験をします。このJavaScriptはこの段落の内容を取得します。
</p>

<p>
<a href="javascript:alert(document.getElementById('targetElement').innerHTML);">
段落の内容を取得
</a>
</p>

</body>
</html>

 「document.getElementsByName( Name )」でHTMLの要素につけた「Name」属性からその「Name」属性を持った要素のリストを取得できます。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>DOMテスト</title>
</head>

<body>

<p name="targetElement">
 DOMの実験をします。このJavaScriptはこの段落の内容を取得します。
</p>

<p>
<a href="javascript:alert(document.getElementsByName('targetElement')[0].innerHTML);">
段落の内容を取得
</a>
</p>

</body>
</html>

 「document.getElementsByTagName( タグ名 )」でHTMLのタグ名から要素のオブジェクトのリストを取得できます。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>DOMテスト</title>
</head>

<body>

<p>  DOMの実験をします。このJavaScriptはこの段落の内容を取得します。 </p>

<p>
<a href="javascript:alert(document.getElementsByTagName('p')[0].innerHTML);">
段落の内容を取得
</a>
</p>

</body>
</html>

 「createElement」と「appendChild」で要素を追加できます。「createTextNode」でテキストを追加し、「setAttribute」で属性を設定できます。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>DOMテスト</title>
<script type="text/javascript">
<!--
function appendParagraph(){
 //段落のオブジェクトを生成
 var ParagraphObj = document.createElement('p');

 //ParagraphObj の子要素に 文字列のノード を追加
 ParagraphObj.appendChild(document.createTextNode('JavaScriptで追加した段落です'));

 //ParagraphObj の style を設定
 ParagraphObj.setAttribute('style', 'background-color:#E0E0E0;');

 //body の一番最後に追加
 document.body.appendChild(ParagraphObj);
}
-->
</script>
</head>

<body onload="appendParagraph()">

<p>
 DOMの実験をします。JavaScriptでDOMのノードを追加します。
</p>

</body>
</html>

 「document.body」以外でも、「getElementById」などで取得した要素にも「appendChild」で追加できます。

このブログの人気の投稿

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

PowerShellで複数ファイルのプロパティを取得する方法(準備編)

簡単 YouTube動画をダウンロード、音声のみ保存する方法 2019

DOMノードオブジェクトを文字列に変換する

AppleScript 改行 コード 置換

Blender: 辺の長さを数値で指定するアドオン

VMWare Playerでホストとゲスト間でクリップボードが共有できない時の対処法