プロが教える店舗&オフィスのセキュリティ対策術

久しぶりの、教えて gooです。
宜しくお願いします。

HTMLとJavascriptで動くホームページを、メモ帳で記述しています。


構造は、

1)HTML、BODY、FORM内のselectで、条件1と条件2を取得
 Javascriptで、入力チェックすると同時に、
 読み込むデータベース jsファイルです を動的に決めて、変数aに格納します。
 また、条件3を、変数bに格納します。

2)次に、外部に置いているjsファイルを、Javascriptで読み込みます。

3)そして、Javascriptで、条件3に一致するレコードでテーブルを生成して
 innerhtmlで書き出します。


部品1)単体、部品3)単体は、動作チェックが済んでいます。

ですが、部品1)から、部品3)に、変数a、bを引き渡せていないようで
検索条件は指定出来るのに、読み込み、書き出しが実行できません。

どのように、記述を改めれば動作するのか、教えて下さい。

宜しくお願いします。


以下、ソースを抜粋します。


001 <HTML>
002 <HEAD>
003 <SCRIPT type="text/javascript">
004 function Select(){
005 var frm = document.forms["frm1"];
006
007 var idx = frm.elements["select1"].selectedIndex;
008 var idy = frm.elements["select2"].selectedIndex;
009 var idz = frm.elements["select3"].selectedIndex;
010
011   if(idx!="" && idy!="" && idz!="") {
012 /* 読み込みDB */
012 dbname1 = frm.elements["select1"].options[idx].value;
013 dbname2 = frm.elements["select2"].options[idy].value;
014 /* DB抽出条件 */
015  jouken1 = frm.elements["select3"].options[idz].value;
016
017 /* DB名称生成 */
018 DBname = "./DB_"
019 DBname += dbname1
020 DBname += "_"
021 DBname += dbname2
022 DBname += ".js"
023 }
024 else{
025 alert("未入力項目があります");
026 }
027 }
028 </script>
029
030
031 <script type="text/javascript" src="DBname"></script>
032
033
034 <script type="text/javascript">
035 var i;
036 var r;
037 var arrayLength=exDB.length;
038
039 function dataSearch(jouken1) {
040 var flag=false;
041 var msg;
042 var data=new Array();
043
044   msg = "<TABLE BORDER='0'>";
045 msg = msg+"<TR>"
046 msg = msg+"<TH width='60'>名前</TH>
047 msg = msg+"<TH width='120'>都道府県</TH>
048 msg = msg+"<TH width='120'>電話番号</TH>";
049 msg = msg+"</TR>";
050
051 for(i=0; i<arrayLength; i++) {
052 data=funeDB[i].split(" ");
053 if(data[0]==jouken1) {
054 flag = true;
055 msg = msg+"<TR>";
056 msg = msg+"<TD class='light-right' width='60' >"+data[0]+"</TD>";
057 msg = msg+"<TD class='light-right' width='120'>"+data[1]+"</TD>";
058 msg = msg+"<TD class='light-center' width='120'>"+data[2]+"</TD>";
059 msg = msg+"</TR>";
060 }
061 if(flag==false) {
062 msg = msg+"<tr><td>該当する文字列はありません</td></tr>";
063 }
064 msg = msg+"</TABLE>";
065 document.getElementById("displayPane").innerHTML=msg;
066 }
067 </SCRIPT>
068
069
070 </HEAD>
071
072 <BODY>
073
074 <FORM name="form" action="#">
075 <SELECT name="select1">
076 <option value="">▼選択してください</option>
077     中略
078 </SELECT>
079
080 <SELECT name="select2">
081 <option value="">▼選択してください</option>
082     中略
083 </SELECT>
084
085 <SELECT name="jouken1">
086 <option value="">▼選択してください</option>
087     中略
088 </SELECT>
089
090 <INPUT type="button" value="検索する" onclick="Select()" />
091
092 </FORM>
093
094 <DIV id="displayPane"></DIV>
095
096 </BODY>
097
098 </HTML>

A 回答 (2件)

「外部js 動的読み込み」あたりで検索すればすぐに出てきます。



var s=document.createElement('script');s.type="text/javascript";s.src=DBname;
document.body.appendChild(s);

のやり方が一般的、らしい。


document.body.appendChild(document.createElement('script')).src="test.js"
でもIE8,FF,Opera確認。


document.writeだと何度も読み込み処理ができないかと思います。
    • good
    • 0

cssは必要により変更していますが。

Javascriptではやった事無いですが。
<script type="text/javascript" src="DBname"></script>なく
document.write("<script type="text/javascript" src="'+DBname+'"></script>");
ないですか。
Javascriptは、初心者ですが間違いていたらごめん
    • good
    • 0

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