javascriptで、DOMオブジェクトを読み込んで

そのidの記述しているタグが<DIV>とか<span>なら
innerHTMLに変換して、<input>タグなら
valueにするようなテクニックはあるのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2007/05/24 17:27:39
  • 終了:2007/05/25 15:52:45

回答(5件)

id:aside No.1

aside回答回数339ベストアンサー獲得回数312007/05/24 17:56:43

ポイント25pt

var oDiv = document.getElementsByTagName("DIV");

var oSpan = document.getElementsByTagName("SPAN");

var oInput = document.getElementsByTagName("INPUT");

for (var idx = 0 ; idx < oDiv.length; idx++) {

alert(oDiv[idx].innerHTML);

}

for (var idx = 0 ; idx < oSpan.length; idx++) {

alert(oSpan[idx].innerHTML);

}

for (var idx = 0 ; idx < oInput.length; idx++) {

alert(oInput[idx].value);

}


でいけるぽ

id:hopefully

納得です。ありがとうございます。

2007/05/25 15:48:31
id:jack_sonic No.2

じゃっくそにっく回答回数123ベストアンサー獲得回数252007/05/24 19:49:27

ポイント30pt

このようにしてタグごとにinnerHTMLとvalueを切り替えることができます。

<html>
<body>
<!-- タグ -->
<div id="tag1">ディブ</div>
<input id="tag2" type="button" value="ボタン">

<script type="text/javascript">
<!--
/////////////////////////////////////////////////
//  setText(obj,text) タグを考慮して内容をセットする関数
//	obj : オブジェクト
//	text:セットする内容
function setText(obj,text)
{
	// タグの名前を取得
	tagName = obj.tagName;
	// 判断・振り分け
	if( tagName.match(/DIV/i) )
	{	
		obj.innerHTML = text;
	}else if( tagName.match(/INPUT/i) ){
		obj.value = text;
	}
}

// 呼び出しサンプル
setText(document.getElementById("tag1"), "これはdivです");
setText(document.getElementById("tag2"), "これはinputです");
//-->
</script>
</body>
</html>
id:hopefully

これがいいですねw

これを使用します。

2007/05/25 15:49:00
id:aside No.3

aside回答回数339ベストアンサー獲得回数312007/05/24 18:07:28

idチェック入れてなかったのでif文とかで対応してください

id:hopefully

了解です。

2007/05/25 15:49:10
id:smeghead No.4

smeghead回答回数11ベストアンサー獲得回数02007/05/24 18:20:34

ポイント25pt

テクニックと言えるかわかりませんが、setValueAuto関数で設定するようにすれば、設定する側は意識しなくて良くなります。setValueAutoの判定処理は実用には不十分かもしれませんので補完してください。

<html>
  <body>
  <span id="top"></span>
  <div id="description"></div>
  <input id="name" type="text">
  </body>
  <script>
    function init() {
      setValueAuto("top", "トップ");
      setValueAuto("description", "説明文");
      setValueAuto("name", "ななし");
    }
    //idで指定されたエレメントの値を設定する。
    function setValueAuto(id, value) {
      var element = document.getElementById(id);
      if (!element) return;
      if (element.tagName == 'INPUT') {
        element.value = value;
      } else {
        element.innerHTML = value;
      }
    }
    document.onload = init();
  </script>
</html>
id:hopefully

これもありですねw

ありがとうございます。

2007/05/25 15:50:34
id:kluck No.5

クラック回答回数4ベストアンサー獲得回数02007/05/25 09:03:28

ポイント20pt
function editDOM(o, t) {
	switch (o.tagName.toLowerCase()) {
	case 'input': case 'textarea':
		if (typeof t != 'undefined')
			o.value = t;
		return o.value;
	default:
		if (typeof t != 'undefined')
			o.innerHTML = t;
		return o.innerHTML;
	}
}

editDOM(document.getElementById('node'), 'TEXT'); // nodeにTEXTをセットする。
alert(editDOM(document.getElementById('node'))); // nodeの中身を表示する。
id:hopefully

検討してみます。

ありがとうございます。

2007/05/25 15:51:05
  • id:aside
    もうしわけない、コメントに書くつもりが、回答に書いてしまいました。
    すみません
  • id:hopefully
    いいですよ。
    少しだけしかポイント付与出来ないですが
    かんべんしてください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません