リモートスクリプト実行でのVBscript変数の扱い

このQ&Aのポイント
  • リモートスクリプト実行のためのVBscriptで変数を扱う方法についての質問です。
  • HTMLのテーブル内のイメージをクリックしてリモートスクリプトを実行し、データの更新とイメージの変更を行うスクリプトを作成しています。
  • リモートスクリプトで問題が発生していて、object.innerHTML構文の部分で変数を使用するとエラーが発生します。変数をオブジェクトとしてではなく、変数として認識させる方法はありますか?
回答を見る
  • ベストアンサー

リモートスクリプト実行の為のVBscriptでの変数の扱い

お世話になります。 HTMLのテーブル内のイメージをクリックする事でリモートスクリプトを動かし、あるDBにデータを更新しながら、イメージも変更するスクリプトを作成しております。 リモートスクリプトを使ったデータ更新等は上手くいきますが、一点、HTML内で動かすvbscriptで問題が出てしまいました。 object.innerHTML構文のところです。 objectの部分にはASPで動的に変化するIDを代入しなければなりませんが、objectの部分に変数を入れると、変数としてではなく、オブジェクトそのものと認識され、「オブジェクトがありません」というエラーが起こります。 サンプルのソースを如何に記載いたします。 ***ソース <SCRIPT Language="vbScript"> <!-- function updatedata1(id) id.innerHTML ="<a href='#'><IMG src='img/"&img_name&".gif' border=0 onClick=updatedata1('"&img_name&"')></a>" End Function // --> </SCRIPT> ~ 中略 ~ <TD id= "usr001"><a href="#"><IMG src="img/work.gif" width="30" height="18" border="0" onClick="updatedata1('usr001')"></a></TD> ***** 上記ソース内のvbscriptに対し、onClick="updatedata1('usr001')でinnerHTMLのオブジェクトとなる「usr001」を渡しています。 vbscrptの function updatedata1(id) でusr001をidに代入し、id.innerHTMLとしたところがエラーになります。 onClickでダイナミックに変更をする部分は無限にあるため、inner.HTMLのオブジェクトは変数で変わるようにしたいのですが、方法はありますでしょうか? 宜しくお願い申し上げます。 PS. VBはそれ程得意な言語ではありません。もしかしたらかなり初歩的なミスかもしれませんが、お許しください。

  • burn
  • お礼率43% (20/46)

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

  • ベストアンサー
  • tamaCo
  • ベストアンサー率66% (47/71)
回答No.1

こんにちは。 WSHはよく解らないのであてずっぽうで申し訳ないのですが。。 onClick="updatedata1('usr001') この時点で'usr001'は文字列です。なのでFunctionのパラメータとして渡った際に idのデータ型はString型になっていると思われます。 そうすると「'usr001'.innerHTML」というのは構文的におかしいので エラーになる。。。。と推測されます。(WSH知らないので推測です(^-^; ブラウザが限定(IE5.0以上)されてしまいますがEval関数は使えないでしょうか? Eval(id).innerHTML = ~~~ http://www.microsoft.com/japan/developer/library/script56/vsfcteval.htm http://www.microsoft.com/japan/developer/library/script56/vtoriVersionInformation.htm 古いIEに対応しなければならないと言う事ならば。。。他の方よろしくお願い致します。 はずしてたらごめんなさい。

burn
質問者

お礼

ご回答有難うございました。 Eval関数を用いたところ上手く行きました。 有難うございます。 IE5.0以上の制約ですが、リモートスクリプト自体がIE5.0以上の制約があるようなので、大丈夫です。 (グローバルに公開するWebでは無い為・・・) WEBアプリケーションは通常PHPかPerlで作るため、VBscriptは素人に近いです(笑) 今回は大変勉強になりました。 判らないことがあったら、また質問投稿しますので、お教え頂けると嬉しいです。 有難うございました。

関連するQ&A

  • VBscriptの配列変数をJavascriptで使うには

    下記ソースでVBscriptの配列変数をJavascriptで使うにはどうしたらいいでしょうか。 vbscriptで配列stat2(i)に値セット後javascriptで使いたい <script type="text/javascript"> <!-- //===== function test(){ var i; for (i=0;i<9;i++){ document.form1.text1[i].value=<%=stat2(i)%>; <-これだとエラー } } //====== //--> </script>

  • IEでimages[...]のエラーになる原因は?

    下記プログラムをIETesterで開くと、 このページのスクリプトでエラーが発生しました。 文字: 3 エラー: 'document.images[...]'はNullまたはオブジェクトではありません コード: 0 というエラーメッセーが出てしまいます。 Firefoxだと正常に動いたのですが、 document.images[i].srcというのは、IEで対応していないということでしょうか? それか、そもそもこういった書き方は間違いでしょうか? <script language="JavaScript"> <!-- rrr = new Image(200,100); rrr.src = "sample.jpg"; function sss(){ document.fff.nnn.value=""; ppp.innerHTML = "" for(var i=1; i<=30; i++){ document.images[i].src = rrr.src; : : : : : //--> </script> </head> <body onload="sss()"> <form name="fff"> <img src="title.jpg"> <div id="nnn"></div> <table> <tr> <td><img src="a.jpg" width="200" height="100" onclick="yyy(1)"></td> <td><img src="a.jpg" width="200" height="100" onclick="yyy(2)"></td> <td><img src="a.jpg" width="200" height="100" onclick="yyy(3)"></td>

  • javascriptで画像の移動

    お世話になります。 画像をクリックすると、クリックした画像のaltの内容をinput type="text"に表示する。 左に移動ボタン押下でクリックされた画像を1つ左に移動、 右に移動ボタン押下で1つ右に移動する。 1.移動ボタン押下で移動させるにはどうすればよいでしょうか? ※HTMLはtableタグでなくてもよいと思っております。 2.クリックした画像が分かるようにしたいのですが 何かいい方法などありますでしょうか? <html> <head> <script> var clickId =""; function down(id){ clickId = id; document.getElementById("comment").value = document.getElementById(id).alt ; } function move(d){ } </script> </head> <body> <table> <tr> <td id="p1"><a href="#" onClick="down('1');"><img id="1" alt="alt1" src="1.gif" /></a></td> <td id="p2"><a href="#" onClick="down('2');"><img id="2" alt="alt2" src="2.gif" /></a></td> <td id="p3"><a href="#" onClick="down('3');"><img id="3" alt="alt3" src="3.gif" /></a></td> </tr> <tr> <td align="left"><a href="#" onClick="move('1');"><img alt="左に移動" src="L.gif" /></a></td> <td align="right"><a href="#" onClick="move('0');"><img alt="右に移動" src="R.gif" /></a></td> </tr> </table> <input type="text" id="comment" /> </body> </html>

  • 特定の場所を指定して切り替え

    例えば、次のようなタグがあるとします。 <table cellspacing="0" cellpadding="0" width="75%" border="1"> <tr> <td id="a">(1)</td> <td id="b">(2)</td> </tr> </table> このとき、idがaのセルに別のページを読み込ませるのは可能なのでしょうか? 画像のときのように、 <img src="aaa.png" id="img"> <a href="#" onClick="chenge()">次へ</a> <script language="JavaScript"> var num=1; <!-- function chenge(){ num=num+1; img.src="Illustration/illustration-"+num+".png"; } //--> </script> みたいな感じで切り替えたいのですが・・・

  • 画像メニューの開閉

    JavaScriptで画像メニューの開閉を行いたいのですが、 うまく動きません。 「aaa」が閉じていた場合には「aaa」を開くまではできたのですが、 「bbb」を閉じるという1行を追加したら動かなくなりました。 どなたかご教授願います。 【JavaScript】 function showSubmenu01() { if(document.getElementById("aaaSub").innerHTML == '') document.getElementById("aaaSub").innerHTML = '<img src="aaa.gif">'; document.getElementById("bbbSub").innerHTML = ''; else document.getElementById("aaaSub").innerHTML = ''; } 【HTMLソース】 <ul> <li><a href="#" onClick="showSubmenu01()"><img src="img/menu_aaa.gif" /></a></li> <li><div id="aaaSub"></div></li> <li><div id="bbbSub"><img src="bbb.gif" /></div></li> </ul>

  • ソースが難しくて初心者にわかるようにどなたか教えて

    https://okwave.jp/qa/q9365480.html の続き 初心者なのでソースだけではわかりません。 もう少し具体的に何をやっているか教えていただければ幸いです。 >>> functionaddCR( obj ){ id=obj.id; strArray[ id - 0 ]+='\r\n'; alert(obj.parentNode.outerHTML) obj.innerHTML+='<br>'; } 恐らくここで、テキストをクリックしたとき、クリックした場所で改行されるようですが、もう少し初心者にわかるように解説いただけませんか? これは何を再代入しているのですか? id=obj.id; 変数A += 変数Bは、変数A = 変数B+変数Aなので、 配列になにかしているのですか? strArray[ id - 0 ]+='\r\n'; なぜこれでクリックしたところにbrがつくのでしょうか? obj.innerHTML+='<br>'; https://codepen.io/anon/pen/xLWmZv ソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <textarea>ここに文章を入力してください</textarea> <button>表示</button> <button>出力</button> <textarea id="out" readonly></textarea> <div id="disp"></div> <script type="text/javascript"> varstrArray; functionaddCR( obj ){ id=obj.id; strArray[ id - 0 ]+='\r\n'; alert(obj.parentNode.outerHTML) obj.innerHTML+='<br>'; } functiondisp(){ var str=document.getElementsByTagName('textarea')[0].value; strArray=str.split(''); vardiv=document.getElementById('disp'); div.innerHTML=''; var aProto=document.createElement('a'); for( var i =0, len=strArray.length; i<len; i++ ){ vara=aProto.cloneNode(1); a.onclick=function(){ addCR(this); } a.innerText=strArray[ i ]; a.id=i div.appendChild(a); } } functionoutput(){ var outText=document.getElementsByTagName('textarea')[1]; outText.value=strArray.join("") } document.getElementsByTagName('Button')[0].onclick=function(){ disp() } document.getElementsByTagName('Button')[1].onclick=function(){ output() } </script> </body> </html>

  • 背景色の変更を簡単に

    <script type="text/javascript"> <!-- function change(bg_color){ document.bgColor = bg_color; } //--> </script> ************ <table> <tr> <td onclick="change('#FFFFEE')" style="background-color: #FFFFEE">クリーム</td> <td onclick="change('#EEFFFF')" style="background-color: #EEFFFF">水色</td> <td onclick="change('#FFEEFF')" style="background-color: #FFEEFF">桃色</td> <td>~~</td> </tr> </table> ************ javascript初心者です。テストでなんとか動くようになりました・・・ これで間違いないでしょうか? これで正しければ onclick="change('#~~~')"の記述を全カ所にこれから入れようと思うのですが、 onclick="change('#~~~')"の部分を記述しないで、 style="background-color: #~~~">のstyleの色名#~~~を引っ張り込む方法とか、統一する方法とか簡素化する方法はありますか? 例えば<td style="background-color: #FFFFEE">クリーム</td> HTMLはこのままでできないでしょうか? ここで教えて頂いた以下の画像の場合は出来たので同じように出来れば嬉しいのですが・・・ <script type="text/javascript"> function change(evt) { e = evt.target || evt.srcElement; if (e.nodeName=='IMG') document.body.style.backgroundImage = 'url(' + e.src +')'; } </script> <table onclick="change(event)"> <tr> <td><img src="a001.jpg"></td> <td><img src="a002.jpg"></td> <td><img src="a003.jpg"></td> </tr> </table> *********************** なかなか応用ができなくて困っています。 なんとか簡単にできれば嬉しいです<(_ _)>

  • 画像をクリックして別の画像を変えたい

    ボタン画像をクリックしたときに同一ページ内にある画像が変わるようにしたいのですが、下のように描くと、ボタン画像(button.gif)自身が2.pngなどの画像に変わってしまいます。   <HTML> <HEAD> <TITLE>スワップイメージ</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function changeImage(imageUrl){ document.images[0].src = imageUrl; } // --> </SCRIPT> </HEAD> <BODY> <A HREF="#" onClick="changeImage('1.png')" ><IMG SRC="button.gif" border="0"></A> <A HREF="#" onClick="changeImage(2.png')" ><IMG SRC="button.gif" border="0"></A> <A HREF="#" onClick="changeImage(3.png')" ><IMG SRC="button.gif" border="0"></A> <TABLE BORDER="0"> <TR> <TD>ボタンを押すと下に画像が表示されます。</TD> </TR> <TR> <TD><IMG SRC="1.png"></TD> </TR> </TABLE> </BODY> </HTML> 原因を私なりに考えたところ、設定した変数mageUrlをボタンを表示させるために使った<img src="button.gif">で受け取ってしまっているというのはわかりました。(確認のため <IMG SRC="1.png"> を<A HREF>~</A>より上に持ってきたら思っていた動きになりました。)  けれどそれからどう修正したらもとの順番でもちゃんと動くのかがわかりません。過去ログの似た質問も拝見したのですが、今の自分では理解できませんでした‥。すみませんがよろしくお願いいたします。

  • エラーが起きてしまいます

    アルバムページを作ろうと思っていたのですが どこが、どう間違っているのでしょうか? 一応表示はできていると思うのですが… <HTML> <HEAD> <TITLE></TITLE> <SCRIPT language=javascript> var prevObj = null function chBorder(elem,color) { if(prevObj != null) { prevObj.style.borderColor = "#ffffff" } prevObj = elem elem.style.borderColor = color } </SCRIPT> </HEAD> <BODY> <TABLE> <TBODY> <TR> <TD> <IMG onclick="myImg1.src=this.src" src="1.jpg" width="60"> <IMG onclick="myImg1.src=this.src" src="2.jpg" width="60"> <IMG onclick="myImg1.src=this.src" src="3.jpg" width="60"> <IMG onclick="myImg1.src=this.src" src="4.jpg" width="60"> <IMG onclick="myImg1.src=this.src" src="5.jpg" width="60"> </TD> </TR> <TR> <TD align="center"> <IMG id="myImg1" src="0.jpg" width="300"> </TD> </TR> </TBODY> </TABLE> </BODY> </HTML>

  • 【VBScript】※渡したい変数のみ抜粋

    【VBScript】※渡したい変数のみ抜粋 WScrip quit(1) 【バッチスクリプト】 for %%i ("パラメータファイル") do ( cscript a.vbs %%i if not %errorlevel%==0 goto err ) 上記VBSが異常終了した際に返す、戻り値1を そのままバッチスクリプトのerrorlevelに返したい のですが、errorlevel==0となってしまいます。 for文を使わず、vbsを実行していた際には、 旨く引き渡せていたのですが、構文の修正が 必要なのでしょうか? どなたかご教示下さい。 宜しくお願いします。

専門家に質問してみよう