csvファイルの内容を絞り込んで表示させようと思っているのですが、うまくいきません。考えて色々やって見たのですが出来ないので、どなたかアドバイスを頂けないでしょうか。
<form name="myFORM">
人数を選択してください
<select name="myNinzuu">
<option selected value=1>1人
<option value=2>2人
<option value=3>3人
</select>
<input type="button" value="データを表示" onClick="window.open('data.html','_blank')" />
</form>
------------------data.html------------------------
<html>
<script type="text/javascript"><!--
var Sanka = new Array[iti,ni,san];
var Index = document.myFORM.myNinzuu.value;
if(window.opener.myFORM.Ninzuu.value){
document.write('<object id="myDatabase" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">');
document.write('<param name="DataURL" value="data.csv">');
document.write('<param name="UseHeader" value="true">');
document.write('</object>');
}
--></script>
<body>
<table datasrc="#myDatabase" id="myTBL">
<tr>
<td><DIV datafld="ikisaki"></DIV></td>
<td><DIV datafld="Sanka[Index]"></DIV></td>
</tr>
</table>
</body></html>
------------------csvファイル------------------------
ikisaki,iti,ni,san,
東京,28000,54000,75000,
名古屋、15000,28000,40000,
広島、18000,23000,47000,
所々消したので文法的に大間違いがあるかもしれませんが・・・
csvファイルのx軸を絞り込みたいのです。
まだまだ勉強不足でわかってないところが多く、根本的に間違っているかもしれませんが、その辺の指摘も含めてお願いします。
No.4ベストアンサー
- 回答日時:
こちらの認識不足でした。
すみません。アプレットクラスは使用していませんでした。
データバインド機能を使用してCSVファイルからデータを読み込み、
やり方でしたね。
やっと意味がわかりました。
(1)var Sanka = new Array[iti,ni,san];
の必要ないです。削除してかまいません。
(2)<td><DIV datafld="Sanka[Index]"></DIV></td>を変更します。
<script type="text/javascript">
if(window.opener.myFORM.myNinzuu.value == "1"){
document.write('<td><DIV datafld="iti"></DIV></td>');
}
if(window.opener.myFORM.myNinzuu.value == "2"){
document.write('<td><DIV datafld="ni"></DIV></td>');
}
if(window.opener.myFORM.myNinzuu.value == "3"){
document.write('<td><DIV datafld="san"></DIV></td>');
}
</script>
davosukeさん毎回の詳しい説明有難うございます。
今回の回答でやっと望んでいたことができました。
if文での条件分岐は試していたのですが、条件の内容の記述がうまい事いかずにず~っと悩んでいました。
davosukeさんの親切な説明のおかげでとてもよくわかりました。
本当に有難うございました。
No.3
- 回答日時:
説明が不足しているようなので補足して実行しました。
【疑問点】
・ShowTable()はいつ呼ばれるのですか??
(onLoad時に呼ばれると仮定して実行しました。)
data.htmlの<body>を<body onLoad="ShowTable()">に変更。
・objDataBindとは、どこから取得しましたか??
(アプレットクラスから提供されるもの??)
【実行結果】
data.htmlにmyFORMというファームが無いからです。
呼びもとのhtmlを参照する必要があります。
以下のように変更してください
var Index = document.myFORM.myNinzuu.value;
↓
var Index = window.opener.myFORM.myNinzuu.value;
まず、これだけ修正して実行してみてください。
それでも駄目な時は、アプレットクラスのソースをご提供してください。
【質問の回答】
アプレットクラスソースとは、
アプレットクラスのコンパイル前のソースを指します。
アプレットクラスとは、Web上で動くJavaプログラムです。
davosukeさん、度々の回答ありがとうございます。
加えて毎度の説明不足と、私の知識不足でご迷惑をおかけしてしまってすいません。
情けない話ですが、ソース自体が私自身で組上げた物ではなく、色々な方々の公開ソースを組み合わせた物なので、davosukeさんが今回の回答で疑問に思われた、
>・ShowTable()はいつ呼ばれるのですか??
>・objDataBindとは、どこから取得しましたか??
の返事が出来ません。
私自身わかってないのですが、「できたからいいか」という感じでした。
質問した時のソースを全て開示しますので、いけないと思われるところの指摘と、こうした方が良いというアドバイスをいただけないでしょうか。
<body>
<form name="myFORM">
行き先を入力してください
<input type="text" name="myTabisaki"><br>
人数を選択してください
<select name="myNinzuu">
<option selected value=1>1人
<option value=2>2人
<option value=3>3人
</select>
<input type="button" value="データを表示" onClick="window.open('data.html','_blank')" /></form>
</form>
</body></html>
------------------data.html------------------------
<html>
<script type="text/javascript"><!--
function ShowTable()
{
//selectにて選択された値を取得します。
var nIndex;
var Sanka = new Array[iti,ni,san];
var Index = window.opener.myFORM.myNinzuu.value;
//データにフィルタをかけます。
objDataBind.FilterValue=nIndex;
objDataBind.FilterColumn="ikisaki";
objDataBind.FilterCriterion="=";
objDataBind.Reset();
}
if(window.opener.myFORM.myTabisaki.value){
document.write('<object id="myDatabase" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">');
document.write('<param name="DataURL" value="data.csv">');
document.write('<param name="UseHeader" value="true">');
document.write('<param name="Filter" value="ikisaki=' + window.opener.myFORM.myTabisaki.value + '">');
document.write('</object>');
}
--></script>
-----この後は質問時の通りです。
よろしくお願いします。
No.2
- 回答日時:
(1)window.openからwindow.showModalDialogに変えないと、
人数セレクトボックスの情報が起動したウィンドウから
取得できません。
(2)data.htmlにて
var Sanka = new Array[iti,ni,san];
これが必要かどうかは
document.write('<object id="myDatabase" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">');
document.write('<param name="DataURL" value="data.csv">');
document.write('<param name="UseHeader" value="true">');
document.write('</object>');
のアプレットクラスソースをご提供下さい。
以下、サンプルソース
<html>
<script type="text/javascript"><!--
function openDialog(){
//ダイアログに渡す引数配列を定義
var args = new Array();
//人数セレクトボックスの値を取得
args[0] = document.myFORM.myNinzuu.value;
//ダイアログ起動
window.showModalDialog("data.html",args);
}
--></script>
<body>
<form name="myFORM">
人数を選択してください
<select name="myNinzuu">
<option selected value=1>1人
<option value=2>2人
<option value=3>3人
</select>
<input type="button" value="データを表示" onClick="openDialog()" />
</form>
</body>
</html>
------------------data.html------------------------
<html>
<script type="text/javascript"><!--
var args = window.dialogArguments; //追加
//一応コメント!!
//var Sanka = new Array[iti,ni,san];
//var Index = document.myFORM.myNinzuu.value;
var Index = args[0]; //変更
if(window.opener.myFORM.Ninzuu.value){
document.write('<object id="myDatabase" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">');
document.write('<param name="DataURL" value="data.csv">');
document.write('<param name="UseHeader" value="true">');
document.write('</object>');
}
--></script>
<body>
<table datasrc="#myDatabase" id="myTBL">
<tr>
<td><DIV datafld="ikisaki"></DIV></td>
<!-- アプレットにSankaが定義されていれば、取得可能だが・・・・ -->
<td><DIV datafld="Sanka[Index]"></DIV></td>
</tr>
</table>
</body></html>
更なる回答ありがとうございます。
実は質問したセレクトボックスでの絞込みと、テキストボックスへの入力での絞り込みをやっていて、テキストボックスでの絞り込みはうまくいっていたので質問には省いてました。
実際はこんな感じです。
<form name="myFORM">
行き先を入力してください
<input type="text" name="myTabisaki"><br>
人数を選択してください
<select name="myNinzuu">
<option selected value=1>1人
<option value=2>2人
<option value=3>3人
</select>
<input type="button" value="データを表示" onClick="window.open('data.html','_blank')" />
</form>
------------------data.html------------------------
<script type="text/javascript"><!--
function ShowTable()
{
//selectにて選択された値を取得します。
var nIndex;
var Sanka = new Array[iti,ni,san];
var Index = document.myFORM.myNinzuu.value;
//データにフィルタをかけます。
objDataBind.FilterValue=nIndex;
objDataBind.FilterColumn="ikisaki";
objDataBind.FilterCriterion="=";
objDataBind.Reset();
}
if(window.opener.myFORM.myTabisaki.value){
document.write('<object id="myDatabase" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">');
document.write('<param name="DataURL" value="data.csv">');
document.write('<param name="UseHeader" value="true">');
document.write('<param name="Filter" value="ikisaki=' + window.opener.myFORM.myTabisaki.value + '">');
document.write('</object>');
}
--></script>
<body>
<table datasrc="#myDatabase" id="myTBL">
<tr>
<td><DIV datafld="ikisaki"></DIV></td>
<td><DIV datafld="Sanka[Index]"></DIV></td>
</tr>
</table>
</body></html>
davosukeさんの回答を見てアプレットクラスソースって何?っていうぐらいの知識しかないので、とても参考になります。
説明をきちんとしてなかったので、どんどんご迷惑をおかけしてしまってすいません。
かなり停滞してとても困ってます。どうかよろしくお願いします。
No.1
- 回答日時:
>csvファイルの内容を絞り込んで表示させようと思っているのですが、
>うまくいきません。
とありますが、表示したら、どのようになりますか??
(1)エラーメッセージが出力しまたか??
(2)画面がだんまりになりましたか?
(3)画面遷移するまでにおかしくなっていますか??
もう少し詳細にうまくいかない状況をお願いします。
返答ありがとうございます。
質問の説明不足で内容がよくわからなかったようですね。
ごめんなさい。
実行結果は'東京'、'名古屋'、'福岡'のikisakiの列は表示されるのですが、iti、ni、sanの数値の列は空白です。
どうも
<td><DIV datafld="Sanka[Index]"></DIV></td>
でSanka[Index]をiti、ni、sanのどれとも認識されないみたいです。
変数宣言の
var Sanka = new Array[iti,ni,san];
var Index = document.myFORM.myNinzuu.value;
の時点ですでに間違っているのでしょうか・・・
そんな事すらわかっていませんがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptの変数をJavaの変数...
-
onchangeイベントを強制的に発...
-
JSのボタンを複数う使うには
-
追加ボタンを押した際に ok ボ...
-
onclickが動作しない
-
javascriptで作成されたテーブ...
-
ボタンをクリックして文字を置...
-
INPUTでデフォルト値(数...
-
fileUploadオブジェクトへの値...
-
VB.NETで<Input>タグ、<text...
-
vbscriptでIE自動入力(コンボ...
-
SubとEnd Subについて
-
textarea-Aからtextarea-Bに文...
-
jQueryで設定したイベントハン...
-
new演算子のメリット・便利さは...
-
formのfileの値をhiddenでも持...
-
innerHTML内では改行は禁止?
-
コードレビューをお願いします。
-
return trueとreturn falseの用...
-
<JavaScript>tableタグを入力不...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
javaScriptの変数をJavaの変数...
-
クリックさせたいが、click()が...
-
onclickが動作しない
-
formのfileの値をhiddenでも持...
-
innerHTML内では改行は禁止?
-
追加ボタンを押した際に ok ボ...
-
ボタンかリンクをクリックする...
-
JQueryでfunctionに引数としてI...
-
クリックでテーブル内の背景色...
-
JavaScriptのfileオブジェクト...
-
JSのボタンを複数う使うには
-
VB.NETで<Input>タグ、<text...
-
ブラウザの外にあるマウスの情...
-
jQueryでshow/hideが上手く行か...
-
【javascript】ボタンクリック...
-
onClickがinput type="image"だ...
-
開いた子ウィンドウにあるボタ...
-
jQueryで設定したイベントハン...
-
javascriptで作成されたテーブ...
おすすめ情報