dポイントプレゼントキャンペーン実施中!

document.all.tags("input")(1).
を使って
<form>
<input>
<input type="submit">
<input>
<略>
</form>
の二番目のタグ<input type="submit">を書き換えるとします。
これを<input type="text" maxlength="200">に書き換えたり
<input type="submit">を<textarea ごにょごにょ></textarea>
に書き換えたりする方法はありませんでしょうか。
よろしくお願いします。

A 回答 (2件)

通常、エレメントオブジェクトを取得する場合、document.all.tags


ではなく、document.getElementsByTagNameを使用した方がいいような
気がします。
あと、配列はパーレンではなくブラケットですよ。

var inp = document.getElementsByTagName('input')[1];

下の方でIDを付与できないといっている理由は分かりませんが
順番が固定ならば以下のようにしてはどうでしょうか。

// 新しいエレメントを作成
var n_inp = document.createElement('input');
n_inp.type = 'text';
n_inp.maxLength = '200';
// 現在のエレメント取得
var inp = document.getElementsByTagName('input')[1];
// 新しいエレメントで古いエレメントを置き換える
document.getElementsByTagName('form')[0].replaceChild(n_inp, inp);

ただし、ブラウザなどの互換性を保証はしません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
これを利用してがんばってみます

メモ:
var 新 = createElement('');
新.属性 = '値';
変更対象のエレメント取得
var 古 = 手段問わず;
親取得.replaceChild(A,B);//子要素のBをAにここではAに新Bに古

お礼日時:2008/07/29 18:04

IDを利用するのはどうでしょうか。


----JavaScript--------
function change(){
var id = "target";
document.all.item(id).innerHTML="<input type=\"text\" maxlength=\"200\">";
}
----body--------
<form>
<input>
<div id="target">
<input type="submit" value="submit"><br>
</div>
<input>
</form>

change()を呼び出すと、<div id="target">~</div>内が書き換わります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ですが、事情がありまして、その方法は存じてますが使えません、
タグ自身を変更する方法はありませんでしょうか?
html側の記述は<form>~</form>の前なら付け足せますが
<form>以降は改変できません。

おそらくreplaceを使用するのだと思うのですが、この場合どうすればいいのかがわからなくて・・・
補足:formや各inputには別々のnameが振ってあります

お礼日時:2008/07/29 16:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!