JavaScriptからVBScriptで作った関数を呼び出すことは可能なのでしょうか?
可能なのであれば、やりかたを教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

できますよ。


別のスクリプトタグの中で定義した関数は、普通に呼び出せますので。

<script language=vbscript>
function hoge(arg)
hoge=arg*5
end function
</script>
<script language=javascript>
document.write(hoge(6));
</script>

とか。
逆もしかりです。

この回答への補足

解答ありがとうございます。
早速、教えていただいたのを使いやってみたのですが、
『オブジェクトを指定してください』というエラーになってしまします。
こういうエラーはどういうときにでるのでしょうか?
すいません。初歩的なことで・・・。

ちなみにエラーのでるソースです。

<input type="button" name="show" value="表示" onClick="show_in()">

<SCRIPT LANGUAGE="JavaScript">
<!--
function show_in(){
 listn=document.form1.grup.selectedIndex+1;
 document.form1.grup_no.value = listn;
 document.write(Gamen(listn));
}
//-->
</SCRIPT>

<SCRIPT LANGUAGE="VBScript">
Public function Gamen(listn)

//処理//

End function
//-->
</SCRIPT>

補足日時:2002/02/18 20:43
    • good
    • 0

通常ASPのデフォルト言語はVBScriptとなっていますが、サーバーによってはJAVAScriptを使ってるところもありますよ。


それに、ASPだったらまた、別の話になりますよ。
最初からASPって言ってくれればよかったのに。

<script language=vbscript>

と書いたら、ASPじゃなくてクライアントサイドスクリプトになってしまうのでは。

>私の書いているソースでは <script language=vbscript>を定義してなくて、定義していない関数を呼び出したいのです。

デフォルトがASPと規定されているところではいいですが、そうでないところもあるので、VBScriptと指定しないのは、多少リスクがあると思うのですが。

あと、呼び出しができないことで考えられる原因は、Scriptタグを使ったことで、クライアントサイドスクリプトがサーバーサイドスクリプトを呼び出そうとしたり、その逆をしていることだと思います。
    • good
    • 0
この回答へのお礼

説明不足で申し訳なかったです。
じゃ、クライアントサイドスクリプトからサーバースクリプトへの呼び出しが
できなかったんですね。
勉強不足ですいません。
でも、それがわかっただけでもよかったです。
ありがとうございましたm(__)m

お礼日時:2002/02/19 21:07

これ以前がないと分かりませんね。


form1はちゃんとformタグのnameになってますか?
フォームの中にgrup_no.valueというnameのものはあるのでしょうか?
そのへんが確認どころです。

この回答への補足

言われたとおりにソースを書いてみると、確かに動作しました。
でもですね、すいません。言い忘れたことがひとつ・・・。
ASPに <script language=vbscript> と定義しない場合は、
<vbscript>ではないのですか???
私は <script language=vbscript> と定義しなくても、
<vbscript>だと思っていました。それは、間違いですか???
私の書いているソースでは <script language=vbscript> を
定義してなくて、定義していない関数を呼び出したいのです。
それって、可能なのでしょうか。
わかりにくい質問ですいません。
わかる範囲で結構ですので、もし、よろしければご解答お願いしますm(_)m 

補足日時:2002/02/19 18:00
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJavascriptでプルダウンメニューを作りましたが関数化できません

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function foldmenu(i){
var i;
for(j=1;j<=5;j++){
if(i==j)
$('#sc'+j).toggle('normal');
else
$('#sc'+j).hide();
}
$(function(i){
$('#c'+i).click(function(){
for(j=1;j<=5;j++){
if(i==j)
$('#sc'+j).toggle('normal');
else
$('#sc'+j).hide();
}
});
});
}
</script>

<div id="c1" onClick="foldmenu('1')">1</div>
<ul id="sc1">
<li><a href="#">入力画面1-1</a></li>
<li><a href="#">入力画面1-1</a></li>
</ul>
<div id="c2" onClick="foldmenu('2')">2</div>
<ul id="sc2">
<li><a href="#">入力画面2-1</a></li>
<li><a href="#">入力画面2-2</a></li>
</ul>
<div id="c3" onClick="foldmenu('3')">3</div>
<ul id="sc3">
<li><a href="#">入力画面3-1</a></li>
<li><a href="#">入力画面3-2</a></li>
</ul>
<div id="c4" onClick="foldmenu('4')">4</div>
<ul id="sc4">
<li><a href="#">入力画面4-1</a></li>
<li><a href="#">入力画面4-2</a></li>
</ul>
<div id="c5" onClick="foldmenu('5')">5</div>
<ul id="sc5">
<li><a href="#">入力画面5-1</a></li>
<li><a href="#">入力画面5-2</a></li>
</ul>
と関数化しましたがうまく動きません。
初期状態では1の部分が開く。
それ以降はクリックした部分が開き開いていた部分は閉じるという感じにしたいです。
縦長のプルダウンメニューです。
たてに1から5が並んでいて、1をクリックすると1と2の間に1の子カテゴリーが表示されます。
困っています。教えてください。

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function foldmenu(i){
var i;
for(j=1;j<=5;j++){
if(i==j)
$('#sc'+j).toggle('normal');
else
$('#sc'+j).hide();
}
$(function(i){
$('#c'+i).click(function(){
for(j=1;j<=5;j++){
if(i==j)
$('#sc'+j).toggle('normal');
else
$('#sc'+j).hide();
}
});
});
}
</script>

<div id="c1" onCli...続きを読む

Aベストアンサー

#1、#2ですでに回答はでていますが・・・

id利用で操作していると、onClick="foldmenu('1')"、onClick="foldmenu('2')"…みたいなことをしなくてはならなくなるし、項目の数を増減するだけでもスクリプトを修正しなければならなくなってしまいます。
HTMLの構造の情報を元に処理するように記述しておけば、HTMLソースはその構造を変えない限り自由に編集可能になるので便利です。

例えば、ご提示のソースからidとonclickを全てはずして、その代わりに全体をラップするid付きのdivを追加すれば、以下のようにできます。
(実はjqueryはよく知らないので、少々いい加減です)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head><title>test</title>
<style type="text/css">
#wrap ul {list-style:none; }
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
<!--
$(function() {
$('#wrap ul').hide();
$('#wrap ul:first').show();
$('#wrap div').click(function() {
$(this).next('ul').toggle('normal').siblings('ul').hide();
});
});
//-->
</script>
</head>
<body>
<div id="wrap">
<div>1</div>
<ul>
<li><a href="#">入力画面1-1</a></li>
<li><a href="#">入力画面1-1</a></li>
</ul>
<div>2</div>
<ul>
<li><a href="#">入力画面2-1</a></li>
<li><a href="#">入力画面2-2</a></li>
</ul>
<div>3</div>
<ul>
<li><a href="#">入力画面3-1</a></li>
<li><a href="#">入力画面3-2</a></li>
</ul>
<div>4</div>
<ul>
<li><a href="#">入力画面4-1</a></li>
<li><a href="#">入力画面4-2</a></li>
</ul>
<div>5</div>
<ul>
<li><a href="#">入力画面5-1</a></li>
<li><a href="#">入力画面5-2</a></li>
</ul>
</div>
</body>
</html>

-----------------------------------------------
ご提示の構成はメニューが親子だけで孫やひ孫がありませんが、そのような階層に対応することを考慮するなら、全体の構成を同じにして
<ul>
  <li>
    <ul>
      <li> </li>
      <li> </li>
    </ul>
  </li>
  <li> </li>
</ul>
のように、同じ構成にしておいたほうが便利です。
階層があるので、閉じる(=非表示にする)ときに子孫まで全部閉じておくか、そのままにしておいて必要なものだけ閉じるかで、次に開いたときの見え方がかわります。
以下の例は後者の例。(次に開いた時に、閉じた時の状態で開く)
(CSSのtext-decorationは「>」を利用すると簡単に書けるけれど、効かないブラウザがあるみたいなので、ローテクで…)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head><title>test</title>
<style type="text/css">
#navi { list-style:none; padding:0; margin:0; }
#navi li a{ text-decoration:none; }
#navi ul li a{ text-decoration:underline; }
#navi ul { list-style:none; }
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
<!--
$(function() {
$('#navi ul').hide();
$('#navi > li:first > ul').show();
//子供にulを持つliのa要素にイベントを設定
$('#navi li:has(ul)').children('a').click( function() {
$(this).parent().children('ul').toggle('normal');
$(this).parent().siblings().children('ul').hide();
});
});
//-->
</script>
</head>
<body>
<ul id="navi">
<li><a href="#">1</a>
<ul>
<li><a href="#">入力画面1-1</a>
<ul>
<li><a href="#">入力画面1-1-1</a></li>
<li><a href="#">入力画面1-1-2</a></li>
</ul>
</li>
<li><a href="#">入力画面1-2</a></li>
</ul></li>
<li><a href="#">2</a>
<ul>
<li><a href="#">入力画面2-1</a>
<ul>
<li><a href="#">入力画面2-1-1</a>
<ul>
<li><a href="#">入力画面2-1-1-1</a></li>
<li><a href="#">入力画面2-1-1-2</a></li>
</ul>
</li>
<li><a href="#">入力画面2-1-2</a></li>
</ul>
</li>
<li><a href="#">入力画面2-2</a></li>
</ul></li>
<li><a href="#">3</a>
<ul>
<li><a href="#">入力画面3-1</a></li>
<li><a href="#">入力画面3-2</a></li>
</ul></li>
</ul>
</body>
</html>

#1、#2ですでに回答はでていますが・・・

id利用で操作していると、onClick="foldmenu('1')"、onClick="foldmenu('2')"…みたいなことをしなくてはならなくなるし、項目の数を増減するだけでもスクリプトを修正しなければならなくなってしまいます。
HTMLの構造の情報を元に処理するように記述しておけば、HTMLソースはその構造を変えない限り自由に編集可能になるので便利です。

例えば、ご提示のソースからidとonclickを全てはずして、その代わりに全体をラップするid付きのdivを追加すれば、以下のように...続きを読む

QJavaScriptで自作関数を作り、別の場所で実行すると動かない現象について

alertで指定したidを表示させるというプログラムを作成しました。

<script type="text/javascript">
var id = '2222';
test(id);
function test(id) {
alert(id);
}
</script>
この場合、ポップアップした画面に 2222 と表示されます。


この関数を別の場所で使おうとして、下記のように書き換えると何も反応しなくなります。

<script type="text/javascript">
var id = '2222';
test(id);
</script>

<script type="text/javascript">
function test(id) {
alert(id);
}
</script>

どのように書き換えたらうまく動くようになるのか教えていただければと思います。
よろしくお願い致します。

alertで指定したidを表示させるというプログラムを作成しました。

<script type="text/javascript">
var id = '2222';
test(id);
function test(id) {
alert(id);
}
</script>
この場合、ポップアップした画面に 2222 と表示されます。


この関数を別の場所で使おうとして、下記のように書き換えると何も反応しなくなります。

<script type="text/javascript">
var id = '2222';
test(id);
</script>

<script type="text/javascript">
function test...続きを読む

Aベストアンサー

スクリプトタグを一度閉じてしまうと、そこまでの範囲で評価しようとするため
その時点で定義されていないtest()関数の参照ができないということでは?
関数の宣言は実行文の前でやるか

window.onloadを利用して、一度全文読み込んでから実行してください
<script type="text/javascript">
window.onload=function(){
var id = '2222';
test(id);
}
</script>

<script type="text/javascript">
function test(id) {
alert(id);
}
</script>

Q【Javascript】関数へわたす

<script>
function search(str) {
var word = str;
var w = document.forms.search.in.value;
if(word=="SAO"){
document.forms.search.in.value = w + word;
}
}
</script>
<button onclick="SAO">ソードアート・オンライン</button>
<form id="search">
<input id="in">
中略...

ボタンをクリックするとテキストボックスに追記される仕組みを作りたいのですが...
うまく動作しません...
何がダメなのですか?

Aベストアンサー

<form name="form">
<textarea rows="25" cols="50" name="content">ソードアートオンライン</textarea>
<p><input type="button" name="insert" value="追加"></p>
</form>
<script>
var word = "string"; //追加される文字列
var button = document.form.insert; //ボタン要素(name属性で指定)
//ボタンが押されるたびに実行される関数(投稿者様のSAO関数にあたる)
button.onclick = function() {
document.form.content.innerHTML += word; //テキストエリア要素に任意の値を追加
}
</script>

こんなかんじではないでしょうか。(^^)

QPHPのstrip_tagsに相当するJavascriptの関数かライブラリがあれば教えてください。

PHPのstrip_tags
http://manual.xwd.jp/function.strip-tags.html
と同じような処理をしてくれるものがあったら教えてください。
また無い場合は、これに相当する処理をどうやってかけばよいか教えてください。
宜しくお願いします。

Aベストアンサー

Perlなら正規表現でタグを取り除けます。
JavaScriptでも正規表現があったと思いますので、それで実現できるかと思います。

QJavaScript と VBScript を同時に使う

meta内に VBScript, JavaScript の順にスクリプトを配置しているのですが,body内から JavaScript の関数を引数つきで呼び出そうとすると,「Sub プロシージャを呼び出すときに,かっこを使うことはできません。」と表示されエラーになります。

どうすればいいでしょうか。よろしくお願いします。

Aベストアンサー

前の回答ではダメだったのでしょうか?
実際にどのように書いているか補足していただけますか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報