アプリ版:「スタンプのみでお礼する」機能のリリースについて

textareaの最後尾に文字列を追加したいです。

いろいろサイトを検索してみたのですが、解決できず困っています。
 <form>中に<textarea>とボタンを設定しておきボタンを押すと
 文字列を最後尾に追加する。
というのはありました。

私は、ボタンは無しで、画面を読み終わったタイミングで、textareaの最後尾に文字列を追加したいのです。
(仕様で、bodyタグにonloadを記述することは出来ません。)
(またcgiでHTML記述を生成しています。)

が、どこかのサイトにあった例を見ても、どのように自分のソースに
反映したらよいのか分からず・・・。
サイトにあった例を参考に、下記のように記述してみましたが駄目でした。

<textarea name="textArea_A"></textarea>
<SCRIPT LANGUAGE="JavaScript">
<!--
var objTextarea = document.getElementsByName('textArea_A')[0];
objTextarea.value += "AAA";
//-->
</SCRIPT>

(これで、<textarea name="textArea_A">AAA</textarea>
となってくれると良いのですが・・・。)

トンチンカンな意味不明な点があるかも知れませんが、
どうか宜しくお願いいたします。

A 回答 (6件)

>下記のように記述してみましたが駄目でした。



問題なく動くみたいですけど・・・

「駄目」とはどういう状況なのかと、試した動作環境を
提示してみてはどうでしょうか?

この回答への補足

早速の回答ありがとうございます!!<m(_ _)m>

>「駄目」とはどういう状況なのかと・・・

ソースを表示してみると、以下のようになってしまうのです。
<textarea name="textArea_A"></textarea>
document.getElementsByName('textArea_A')[0];AAA
テキストエリアの下(中じゃなくて外)に
document.getgetElementsByName('textArea_A')[0];AAA
と、そのまま画面に表示されてしまいます。

>動作環境・・・
windows xp, ie6 ・・・・・
すみません。勉強不足で、どう説明していいのか分かりません。

補足日時:2008/12/08 15:24
    • good
    • 0

No1の言うように挿入文自体はおかしくないから


問題はこれを呼ぶ部分がどうなってるか じゃない?

この回答への補足

早速の回答ありがとうございます。<m(_ _)m>
呼ぶ部分・・・。
もう少し調べてみますっ!!<m(_ _)m>

補足日時:2008/12/08 15:37
    • good
    • 0

そのHTML、他にも name="textArea_A" を持つタグがありませんか?



<textarea name="textArea_A" id="TEXTAREAA">

var objTextarea = document.getElementById('TEXTAREAA');

の様に変更したらどうでしょう?

# id="TEXTAREAA" を持つタグが他にあれば、それは HTML として反則です。別の名前にしてください。

この回答への補足

早速の回答ありがとうございます。<m(_ _)m>
nameで"textArea_A"は1つしかありません。

> <textarea name="textArea_A" id="TEXTAREAA">
> var objTextarea = document.getElementById('TEXTAREAA');
試してみます!!
<m(_ _)m>

補足日時:2008/12/08 15:40
    • good
    • 0
この回答へのお礼

試したのですが、上手くいかず・・・。

もっと調べて、勉強します。・・・。

お礼日時:2008/12/08 16:16

>ソースを表示してみると



一点だけ気になったので補足ですが、IEでソースというのは
どうひっくりかえっても、
<textarea name="textArea_A">AAA</textarea>
にはなりません。
ソースというのはそういうものです。

見た目上のテキストエリアに入るかどうかは別の話なので
わけてかんがえてください

この回答への補足

>見た目上のテキストエリアに入るかどうかは別の話なのでわけてかんがえてください

はい。
ありがとうございます<m(_ _)m>

補足日時:2008/12/08 17:31
    • good
    • 0

それでは、


objTextarea.value += "AAA";



objTextarea.firstChild.nodeValue += "AAA";

に変えるとどうでしょう?

このあたりはブラウザの種類やバージョンに依存の部分かも知れませんね。 誰のブラウザでもうまくいく事を目的にすると、大変かも....

name="textArea_A" が他に無いのが絶対に間違い無ければ、id を使う必要はありませんが、一般的には id を使用する方が安全ですよ。

この回答への補足

毎度ありがとうございます<m(_ _)m>
出来ずに、途方にくれていました(涙)でも頑張ります!

>objTextarea.firstChild.nodeValue += "AAA";
試してみます。

>このあたりはブラウザの種類やバージョンに依存の部分かも知れませんね。 誰のブラウザでもうまくいく事を目的にすると、大変かも....
そうなのですね・・・( ̄□ ̄;)

>一般的には id を使用する方が安全ですよ。
idにしときます!

ありがとうございます。

補足日時:2008/12/08 17:16
    • good
    • 0
この回答へのお礼

試したのですが・・・。
駄目でした。

多分私の、流用の仕方がおかしいのでしょう。

>このあたりはブラウザの種類やバージョンに依存の部分かも知れませんね。
難しそう・・・。
もう少し、悩んでみます。

ありがとうございます。

お礼日時:2008/12/08 17:48

onloadを上書きすることなく、追加してます



addEvent( window,'load', function(){
document.getElementById('テキストエリアのid').value+='追加文字';
});
function addEvent(elementId, evt, eventHandler, flag){
var element = ( typeof( elementId ) == 'string' )? document.getElementById( elementId ): elementId;
element./*@cc_on @if(1)attachEvent('on'+ @else@*/addEventListener(/*@end@*/evt, eventHandler, flag);
}

この回答への補足

回答ありがとうございます。<m(_ _)m>
すみません。
難しくて、用意には理解できません・・・。

徐々に勉強していきます。
ありがとうございました。

補足日時:2008/12/10 15:02
    • good
    • 0
この回答へのお礼

pipiさんへ
用意→容易の間違い・・・。
容易には理解できません。
すみません。

zxcv0000さん、yambejpさん、SAYKAさん、pipiさん、
回答、本当に有難うございました。

■上手く表示されなかった原因は、objTextarea.value に渡している
 文字列でした。

■ソースは、zxcv0000さんのidを使う方法にしました。

<textarea name="textArea_A" id="TEXTAREA_A"></textarea>
<SCRIPT LANGUAGE="JavaScript">
<!--
var objTextarea = document.getElementById('TEXTAREA_A');
objTextarea.value += "AAA";
//-->
</SCRIPT>

■原因の部分
objTextarea.value += "AAA"; の"AAA"の部分にありました。

cgiの中でこれらの記述を生成しています。
"AAA"の部分は、文字列(fgetsで取得したファイルの内容)を編集したものを変数で渡しています。
下記のような感じです。

objTextarea.value += sMojiretsu;

それで、変数 sMojiretsu に、入っている文字列の加工の仕方がNGでした。
加工前の文字列は、改行やダブルコートなどがそのままの状態でした。
下記のような感じ・・・。

string sMojiretsu ="テキストエリアの件
AAA
"BBB"
CCC
";

これを、
string sMojiretsu ="テキストエリアの件\nAAA\n\"BBB\"\nCCC\n";
と加工したら表示されました。
 (実際にはcgi内部で、replace関数を作って変換したりしているので
 \nを\\n、"を\\\"に置換するとかややこしいことしているのですが、
 sMojiretsuに渡す最終形は上記の通りです。)

ずっと、cgiから起動する方法だったので、原因にたどりつきませんでした。
単独で動かしてみようと思って、その部分だけのHTMLを作成して動かしたら
問題なく動いたので?!と思いました。
煮詰まっている時こそ、
落ち着いて作業しなければとう勉強にもなりました。
どうもありがとうございました。

お礼日時:2008/12/10 15:09

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