みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

javascript初心者です。

javascript初心者です。

下記のソースコードで、単純に、マウスホーバーで、テキストの内容を切り替えるものですが、
IE8ですと動作しますが、Firefox3.5だと動作しません。
なにか、原因あるのでしょうか。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>無題ドキュメント</title>
<script language="javascript" type="text/javascript">
function formcalc(formobj){
var val_a=
formobj.elements["para_a"].value;
var val_b=
formobj.elements["para_b"].value
formobj.elements["answer"].value = val_a * val_b
}
function chktext(){
var obj = document.getElementById("id1");
obj.innerText="テキスト変更しました。";
}
</script>
</head>

<body>
<form>
<input size="10" type="text" name="para_a" value="0" />×
<input size="10" type="text" name="para_b" value="0" />=
<input size="10" type="text" name="answer" /><br />
<input type="button" name="keisan" value="計算" onclick="formcalc(this.form)" />
</form>

<br /><br /><br /><br />
<p id="id1" onMouseOver="this.innerText='受付終了'">最初のテキスト</p>

</body>
</html>

投稿日時 - 2010-09-18 20:00:34

QNo.6191420

困ってます

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

直すところはいっぱいあると思うんですが、

まずinput[type="text"]のvalueは文字列であり、
足し算の時におかしくなる(10+20=1020)ので、
parseIntやNumber、0を減算するなどして数値に変換しましょう。

http://www.tohoho-web.com/js/number.htm
【文字列を数値に変換する】の項。
parseInt(formobj.elements["para_a"].value);
Number(formobj.elements["para_a"].value);
formobj.elements["para_a"].value - 0;

セミコロン「;」はちゃんと書いとくほうが良いかも。

function chktext(){
はどこでも呼ばれていませんが?

XHTMLでは属性名(onmouseover)は小文字で書くべし。

余白を取るのに<br />を連続して使用するなかれ。

ブロック要素にonmouseoverをセットすると、
その要素のエリアいっぱいにマウスが反応してしまうので、
テキスト自身だけにしたい場合は<span>などインライン要素にすべし。


<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title xml:lang="ja" lang="ja">無題ドキュメント</title>

<script language="javascript" type="text/javascript">
function formcalc(formobj){
var val_a = parseInt(formobj.elements["para_a"].value);
var val_b = parseInt(formobj.elements["para_b"].value);
formobj.elements["answer"].value = val_a * val_b;
}
function chktext(){
var obj = document.getElementById("id1");
obj.innerHTML="テキスト変更しました。";
}
</script>
</head>

<body>
<form action="#">
<p>
<input size="10" type="text" name="para_a" value="0" />×
<input size="10" type="text" name="para_b" value="0" />=
<input size="10" type="text" name="answer" />
</p>
<p>
<input type="button" name="keisan" value="計算" onclick="formcalc(this.form)" />
</p>
</form>

<p>
<span id="id1" onmouseover="this.innerHTML='受付終了'">最初のテキスト</span>
</p>

</body>
</html>

投稿日時 - 2010-09-18 22:06:46

お礼

ありがとうございます!!

ご丁寧に解説していただき、
心より感謝いたします!!

投稿日時 - 2010-09-18 23:30:58

ANo.2

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

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

回答(3)

ANo.3

大事なことを書き忘れました。

innerTextはIE独自のものなので、
innerHTMLとかfirstChild.nodeValueで行なったほうがいいです。

投稿日時 - 2010-09-18 22:09:59

お礼

遅くなってしまいましたが、ご回答いただき、誠にありがとうございました!

投稿日時 - 2010-09-29 23:15:13

ANo.1

innerText が、使えないから。

投稿日時 - 2010-09-18 21:32:19

あなたにオススメの質問