こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

value.replaceがうまく動作しません

教えてください。
次のように、Aの値が"アルコール"になるように
replaceしようとしているのですが、"アルコールアレルギー"
が値として入ってしまいます。
何かまちがっているのでしょうか?

A.value="";
B.value="アルコールアレルギー";
C.value="アレルギー";

A.value=B.value.replace(C.value,'');

投稿日時 - 2007-08-26 19:20:02

QNo.3288570

すぐに回答ほしいです

質問者が選んだベストアンサー

var で宣言せずに A.value = "" などの操作を行った場合

A has no properties
file:///C:/Documents%20and%20Settings/sample.html
Line 13

というエラーが発生するのを Firefox のエラーコンソールで確認しました。
varで宣言していればもちろんこのエラーは発生しません。
A(またはBやC)というオブジェクトを生成せずに、いきなり
A.value のようなオブジェクトのスロットに対する操作はできないのではないですか?

> B.value=アレルギー;
> C.balue="";
> のときは、A.valueは
> アレルギーとなりました。

Cがきちんとしたオブジェクトとして認められていない状態なので
空文字列を空文字列で置き換える結果になっていて、そのために
B.valueの"アレルギー"という内容がそのままになっているだけでは
ないでしょうか?

投稿日時 - 2007-08-27 00:59:20

お礼

var C = "";
と宣言しているので、C.valueというのがうまくいかない理由でした。
Cでreplaceするとうまくいきました。
お騒がせいたしました。
ありがとうございました。

投稿日時 - 2007-08-27 10:45:51

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

inputのvalueを編集しようとしているのですか?
当初の質問から予測もつかないんですが・・・

<input type="text" id="A" value="">
<input type="text" id="B" value="">
<input type="text" id="C" value="">

<script>
var A=document.getElementById("A");
var B=document.getElementById("B");
var C=document.getElementById("C");
B.value="アルコールアレルギー";
C.value="アレルギー";
A.value=B.value.replace(C.value,'');
</script>

普通に動きますね・・・
もともとどういうソースを書いていたのでしょうか?

投稿日時 - 2007-08-27 01:32:54

お礼

var C = "";
と宣言しているので、C.valueというのがうまくいかない理由でした。
Cでreplaceするとうまくいきました。
お騒がせいたしました。
ありがとうございました。

投稿日時 - 2007-08-27 10:45:38

ANo.1

A,B,Cはきちんと事前に宣言されていますか?

<script>
A=new Object();
B=new Object();
C=new Object();
A.value="";
B.value="アルコールアレルギー";
C.value="アレルギー";

A.value=B.value.replace(C.value,'');
document.write(A.value);
</script>

投稿日時 - 2007-08-26 22:27:49

補足

varで宣言しているのと、
formの中にhiddenとして存在しているので
new Objectとして宣言していません。

B.value=アレルギー;
C.balue="";
のときは、A.valueは
アレルギーとなりました。

投稿日時 - 2007-08-26 22:44:31

お礼

var C = "";
と宣言しているので、C.valueというのがうまくいかない理由でした。
Cでreplaceするとうまくいきました。
お騒がせいたしました。
ありがとうございました。

投稿日時 - 2007-08-27 10:45:00

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-