• ベストアンサー

JavaScript内からJavaScriptを書き出したいのですが

こんにちは. JavaアプレットとJavaScriptを利用してJavaScriptを書き出すコードを書いてみたのですが,うまく動きません.具体的なコードは以下のようで,リンクはできるのですが,マウスを乗せるとオブジェクトを指定してくださいとエラーがでます.innerHTMLでJavaScriptを書き出すことはできないのでしょうか? <html> ・・・ <body> <SCRIPT language="JavaScript" type="text/javascript"> <!-- function dWrite(){ str='<script type="text/javascript">functionLinkMo(){varLM1;LM1=window.open"","Doc","toolbar=no,location=no,kdirectories=no,width=300,height=250");LM1.document.write"<html><head><title></title></head><body>testです/body></html>");LM1.document.close();}</script><body>rinku <ahref="#"onMouseOver="LinkMo()">ここにのせると</a></body></html>'; document.getElementById("here").innerHTML=str;} //--> </script> <applet ・・・dWriteを呼び出す></applet> <div id="here" style="position:absolute;width:600px; left:0px;top:0px;"> </div></body></html>

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

  • ベストアンサー
  • MO_
  • ベストアンサー率100% (2/2)
回答No.1

ども。(^o^)/ WindowsXP+IE6.0、NC7.1、OE7.23の環境で 「<applet ・・・dWriteを呼び出す></applet>」 の部分を 「<A href="#" onMouseOver="dWrite()">aaa</A>」 に変えてみたところ、問題なく動作するようです。 もしかしたら、JavaApplet側の呼び出し定義の問題かも しれませんね。JavaAppletのプログラミングの問題で したら、「http://oshiete1.goo.ne.jp/oshiete.php3?c=253」 での話になってしまいますが…。(自分もJAVAは詳しく無いので) もし上記でもエラーが出るようでしたら、エラーの 内容やご利用のOS・ブラウザ等の環境を教えて いただければもうちょっと詳しいお話が出来るかも。 ちなみに、JavaScriptでJavaScriptのコードを書き出すこと 自体は可能です。もちろん文字列のエスケープ等にも 注意する必要は有りますし、出来れば str="<SCR"+"IPT type=~" なんてしてあげた方が、誤動作を防げます。

timetraveler
質問者

お礼

回答ありがとうございます. 分かりにくい質問で申し訳ございません. 簡単に上のコードを説明しますと, アプレットが実行されると,リンクにマウスを乗せると"testです"と書かれた新しいウインドウが開くJavaScriptが,<div id="here"・・></div>のところにinnerHTMLにて挿入される,というものです.(dWriteの中身)しかしながら,このdWriteをLiveConnectによりアプレットから実行すると,リンクまでは表示されるのですがマウスを乗せると"オブジェクトをしてしてください"とエラーがでて新しいウィンドウが開けません.もしかしたら,アプレットからの操作は何かしらの制限がかかっているのかと疑っています. ちなみに環境はWinXP,IE6.0,Netscape7で実験しています.

その他の回答 (2)

  • you111111
  • ベストアンサー率45% (20/44)
回答No.3

リンクまでは作成されているようなので、呼び先が見つからないだけでは? >str='<scripttype="text/javascript">functionLinkMo(){varLM1;LM1=window.open"","Doc","toolbar=no..... ↑ function と LinkMo() の間にスペースがないよーな...?

timetraveler
質問者

お礼

回答ありがとうございます. いろいろ検討してみましたが, 現在innerHTMLを使うとHTMLタグは評価されるが,JavaScriptは評価されないのでは?という感じがしています. この質問は,アプレットを使わないでもテストできるコードで再質問したいと思います.

  • lawson
  • ベストアンサー率44% (29/65)
回答No.2

innerHtmlは IE依存のやり方だから、あまり柔軟性がないし、 仕様も不明かくだよ。 DOMを使ったDynamic HTML のほうが簡単ですよ。 ######以下のソースを参考にしてね####### <html> <head> <script> var count = 1; function makeSubmitButton() { var obj = document.createElement("INPUT"); obj.type = "submit"; obj.name = "newSubmit"; obj.value = "新しくできたサブミットボタン " + count++ + " 号だよ。よかったら押してね"; document.forms[0].appendChild(obj); } </script> </head> <body> <form action="http://www.yahoo.co.jp" > <input type="button" name="createButton" value="submitボタンをつくるぞ" onclick="makeSubmitButton();"> <br> </form> </body> </html>

timetraveler
質問者

お礼

回答ありがとうございます. innerHTMLってIE依存だったんですか.知りませんでした. フォームに関しては上のようなやり方もあるんですね. 他にも方法がないかいろいろ検討してみます. また,この質問はコードをもっと簡単にし,アプレットを使わない方法で再質問したいと思います.

関連するQ&A

  • JavaScriptのinnerHTMLの挙動について

    下で"JavaScript内からJavaScriptを書き出したいのですが"で質問したものですが,ソースコードを簡単にして再質問したいと思います. ソースは以下のようにし,divタグのところにinnerHTMLで文字"test"とJavaScriptでアラートを表示させるものです.表示してみたところ,"test"は表示されるのですが,アラートは出てきません. これはinnerHTMLではHTMLのタグは評価されるが,JavaScriptは評価されない,ということなんでしょうか.JavaScriptのこのような仕様は調べにくいので困っています.回答宜しくお願いします. <html><head><title></title> <SCRIPT type="text/javascript"> <!-- var str='<font color="blue">test</font><script type="text/javascript">alert(123);</script>'; function gogo(){ document.all("here").innerHTML = str; } //--> </SCRIPT> </head><body> <div id="here" style="position:absolute;width:600px;left:0px;top:0px;"></div> <SCRIPT type="text/javascript"> <!-- gogo(); //--> </SCRIPT></body></html>

  • innerHTMLを使ってID要素の内容を変えたい

    innerHTMLを使ってID要素の内容を変えたいのですが、 下記のような使い方はできないのでしょうか? var changeTEXT = document.all("hoge2").innerHTML; できない場合、これに変わるようなものがありましたら教えていただけたら、うれしいです。 よろしくお願いします。 <html> <head> <script language="JavaScript" type="text/javascript"> <!-- var changeTEXT = document.all("hoge2").innerHTML;         function change1_ID(){ if(document.all){ document.all("hoge1").innerHTML = changeTEXT } if(document.getElementById){ document.getElemntById("hoge1").innerHTML = text1 } } //--> </script> <style type="text/css"> <!-- #hoge1 { margin: 0px; padding: 0px; height: 600px; width: 600px; } #hoge2 { margin: 0px; padding: 0px; height: 600px; width: 600px; } --> </style> </head> <body> <div id="hoge1" onclick="change_ID()"> ここの内容を変えたい</div> <div id="hoge2"> ここに入力されたHTMLの内容をhoge1の内容にしたい</div> </body> </html>

  • JavaScript表示切替の問題

    ボタンを押すたびに、こんにちはとこんばんはが切り替わるようにしたいのですが、 切り替わりません。なぜかわかる方がいたら教えて頂けると助かります。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <div id="1">こんにちは</div> <input type="button" value="切替" onclick="func_switch()"> <script language="javascript" type="text/javascript"> function func_switch(){ if(document.getElementById(1).innerHTML="こんにちは"){ document.getElementById(1).innerHTML="こんばんは"; } else{ document.getElementById(1).innerHTML="こんばんは"; } } </script> </body> </html>

  • CSSのJavaScript参照

    JavaScriptによって変数に代入された文字列をCSSで参照し、 指定した場所に表示したいのですが、変数名が表示され代入された文字列が表示されません。 ソース <html><head> <title>a</title> <style type="text/css"> <!-- .str{ top:100px; left:10px; position:absolute; }--> </style> </head> <body> <div class="str3">str();</div> //ここで変数strに代入されたaを表示したい <SCRIPT LANGUAGE="JavaScript"> str = "a"; str(){document.write(str);} </SCRIPT></body></html> 初心者のため、間違いが多々あると思いますがよろしくお願いします。

  • ネスケでjavascriptを動作させたいのですが・・・

    こんにちは。 javascriptである画像をクリックすると、任意の場所にその画像を説明 するテキスト文を表示させる、ということをしたいのですが、IE、mozilla ではそれができるのですが、ネスケではどうしたものかテキスト文が表示 されません。 ソースは以下を使用しています。 <script language="Javascript"> function Click_Sub1() {   document.all.div1.innerHTML="出た!"; } function Click_Sub2() {   document.all.div1.innerHTML="消えた!?"; } function Click_Sub3() {   document.all.div1.innerHTML="出た!"; } function Click_Sub4() {   document.all.div1.innerHTML="でてるよ・・・"; } function Click_Sub5() {   document.all.div1.innerHTML="ひいー"; } function Click_Sub6() {   document.all.div1.innerHTML="わおわおわお~"; } </script> これを<head>内に記述して、<body>内の任意の場所に <DIV id="div1" STYLE="position:absolute;left:164px;top:477px; width: 469px; height: 69px;"></DIV> としています。 このソースではネスケはたとえば上の「出た!」といったテキスト文が まったく表示されません。ネスケの「仕様」なのか、ネスケでも実現できる のか、できるとしたらどのような指定方法なのか、ご存知の方がいたらご教授 願います。よろしくお願いします。 色々調べたのですが、コピペできるソースを配布してる素材やさんでも サンプルをネスケで閲覧するとやっぱりでない、という状況なので、なかなか 難しいのでしょうか・・・。

  • Javascriptで文字の書き換え

    現在、IE8とChromeを使用しています。 どちらのブラウザで試してもdocument.write("文");は読み込みますが <id>で指定したタグの中身が変わりません。 javascriptに書いたinnerHTML及びinnerTextの使い方か、もしくは、 根本的なところを何処か間違っているでしょうか? -----------HTML文------------------------------------------------------ <!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>2011_09_02_1</title> <link rel="stylesheet" href="2011_09_02_1.css"> <script type="text/javascript" src="2011_09_02_1.js"></script> <body> <div id="str"><h3>Good morning</h3></div> </body> </html> ---------------外部CSS文----------------------------------------------- div h3{ color:#0000ff; } ---------------外部javascript文------------------------------------------ //タグを含む書き換え用ソース document.write("読み込むかテスト"); var chenge; chenge = document.getElementById(str); chenge.innerHTML = "Good Night"; ---------------------------------------------------------- //下は後から試した文--------文字のみ書き換え用ソース document.write("読み込むかテスト"); //document.getElementById("str").innerText = "Good Night"; --------------------------------------------------------------------------

  • css javascriptについて教えて下さい。

    下記のように、ボタンを押すとdivタグの中にpタグを表示するようにしました。 そこで、そのpタグがdivタグの中央から表示するようにしたいのですが、できません。cssでpタグの左右のmarginをautoにするのかくらいしか思いつかず困っています。pタグがdivタグの中央から表示されるようにするにはどうしたらよいでしょうか。教えて下さい。 <!doctype html> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> <style> #w{ width:500px; height:50px; border : solid 1px; overflow: hidden; } p{ display:inline-block; width:50px; height:50px; margin-left:auto; margin-right:auto; } </style> <script type="text/javascript" language="javascript"> var count = 0; var box; window.onload = function() { box = document.getElementById("w"); } function btnClick(){ var pNode = document.createElement("p"); pNode.innerHTML = count;   box.appendChild(pNode); count ++; } </script> </head> <body> <div id="w"></div> <button onClick="btnClick()">Pタグを生成</button> </body> </html>

    • ベストアンサー
    • HTML
  • javascriptで困っています。教えてください

    javascriptでimgタグの位置を変更しようと考えています。上、下の表示(divタグ)をクリックして上下に移動させたいのですが、上手くいきません。教えていただきたいと思い、投稿させていただきました。よろしくお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=480"> <style type="text/css"> <!-- #wrapper{ width:640px; height:480px; position:relative; } #kt{ width:250px; height:250px; position:absolute; top:100px; left:100px; } #up{position:absolute; z-index: 1;top:0px;width:20px;height:20px;background-color:#F00;} #down{position:absolute; z-index: 2;top:30px;width:20px;height:20px;background-color:#F00;} --> </style> </head> <body> <div id="wrapper"> <div id="up">上</div> <div id="down">下</div> <img id="kt" src="kt.png"> </div> <script type="text/javascript"> var up_element = document.getElementById("up"); up_element.addEventListener("click", touchUp, false); function touchUp() { document.getElementById("kt").style.top = 50;     } var down_element = document.getElementById("down"); down_element.addEventListener("click", touchDown, false); function touchDown() { document.getElementById("kt").style.top = 200; } </script> </body> </html>

  • 【javascript 文法】値渡し?参照渡し?

    以下実行すると、AAAをクリックしてもBBBをクリックしても「BBB」とアラートされます。 <html> <head> <script type="text/javascript" src="prototype.js"></script> </head> <body> <script type="text/javascript"><!-- var gDown= false; var div = document.createElement('div'); div.id = 'AAA'; div.innerHTML = 'AAA'; document.body.appendChild(div); Event.observe(div, 'mousedown',function(){ gDown = div; }); var div = document.createElement('div'); div.id = 'BBB'; div.innerHTML = 'BBB'; document.body.appendChild(div); Event.observe(div, 'mousedown',function(){ gDown = div; }); Event.observe(document, 'mouseup',function(){ alert(gDown.id); gDown=false; }); //--></script> </body> </html> javascriptって値渡しだと思っていたので、期待した動作と異なります。参照渡しだと考えると納得できるのですが、javascriptって 参照渡し?それとも値渡し? と混乱しています。 この辺のところを、教えてください。お願いいたします。

  • javascriptで困っています。教えてください

    javascriptでimgタグの位置を変更しようと考えています。上、下の表示(divタグ)をクリックして上下に10pxずつ移動させたいのですが、どのようにしていいのかよく分かりません。 document.getElementById("kt").style.top = document.getElementById("kt").style.top-10; の部分に無理があるのでしょうか? 教えていただきたいと思い、投稿させていただきました。よろしくお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=480"> <style type="text/css"> <!-- #wrapper{ width:640px; height:480px; position:relative; } #kt{ width:250px; height:250px; position:absolute; top:100px; left:100px; } #up{position:absolute; z-index: 1;top:0px;width:20px;height:20px;background-color:#F00;} #down{position:absolute; z-index: 2;top:30px;width:20px;height:20px;background-color:#F00;} --> </style> </head> <body> <div id="wrapper"> <div id="up">上</div> <div id="down">下</div> <img id="kt" src="kt.png"> </div> <script type="text/javascript"> var up_element = document.getElementById("up"); up_element.addEventListener("click", touchUp, false); function touchUp() { document.getElementById("kt").style.top = document.getElementById("kt").style.top-10;     } var down_element = document.getElementById("down"); down_element.addEventListener("click", touchDown, false); function touchDown() { document.getElementById("kt").style.top = document.getElementById("kt").style.top+10; } </script> </body> </html>