- ベストアンサー
JAVAでリンクボタンを作成して指定したURLにジャンプさせる
- インデックスページに表を表示し、詳細ボタンを作成するにはHTMLの入力方法に従ってボタンを作成すればよいです。
- 詳細ボタンをクリックしたときに指定のページを開くJavaScript関数を作成するには、window.openの引数としてリンク先のURLを指定します。その後、window.openの第二引数には新しく開くウィンドウの設定を指定することができます。
- この方法で詳細ボタンを作成し、クリック時に指定のページを開くことができます。ただし、JavaScriptの部分の記述に注意が必要です。また、JavaとJavaScriptは異なる言語なので、Javaの知識ではなくJavaScriptの知識が必要です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい、JAVAと書いてあることと、 ボタンを既に作成して書いてあるということで、 そういう部分(ボタンの中身の取り出し)は既にできるのだと思い込んでいました。 javascriptでのサンプルを作ってみました。参考にして下さい。JScriptになっていますが、質問文の例は結局IEに依存していると思うので、IEに依存した書き方なのでそうしています。 <html> <head> <title>サンプル</title> <script language="JScript"> window.onload=init; function init(){ var recordSize=abc.recordset.recordCount; for(var i=1;i<=recordSize;i++){ csvTable.rows(i).cells(4).innerHTML="<INPUT ID='JumpHP"+i+"' TYPE='button' VALUE='詳細' onClick=JumpHomepage('"+csvTable.rows(i).cells(4).innerText+"')>"; } } function JumpHomepage(url){ window.open(url,"タイトル","toolbar=yes,location=yes,status=yes,resizable=yes"); } </script> </head> <body> <table id="csvTable" width="700" border=1 datasrc="#abc"> <thead> <tr> <td>No</td><td>Name</td><td>Data1</td><td>Data2</td><td>HP</td> </tr> </thead> <tbody> <tr> <td><span datafld = "no"></span></td> <td><span datafld = "name"></span></td> <td><span datafld = "data1"></span></td> <td><span datafld = "data2"></span></td> <td><span datafld = "hp"></span></td> </tr> </tbody> </table> <object id="abc" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> <PARAM NAME="CharSet" VALUE="shift-jis"> <param name="DataURL" value="abc.csv"> <param name="UseHeader" value="true"> </object> </body> </html>
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>ボタンの方の記述を ><TD><INPUT ID="JumpHP" TYPE="button" VALUE="詳細" onClick="JumpHomepage(url)"></TD> >にすると、「urlは宣言されていません」 >というエラーが出ます。 (;;) ボタンの方は、urlでなくてその行に応じたhpの値を取りだしたモノにするのです >どの行のボタンを押しても一番上の001.htmlにしか 当初の window.open(abc.recordset.Fields("hp").value, の部分で、 abc.recordset.Fields("hp").valueが001.html になっていたためだと思います。 TDの中身を作成する時に、nameやdata1,data2をとりだしているようにすればいいんですよ もう、くじけそうです。orz
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>各行ごとに指定してあるページを開かせることは できますか? そういう話をしているつもりだったんですが・ orz まず、クライアント(ユーザがこのページを見ている時)で、新しくウィンドウをjavascriptから開くには、 window.openを使います、質問文に書いておられるから知っているかと・ window.openは window.open(HTMLのアドレス,タイトル,ウィンドウの設定) の様な形式になっています。これも書いておられる通りですが・ なので、 window.open(?????, "タイトル", "toolbar=yes,location=yes,menubar=yes,status=yes,resizable=yes"); ?????の部分のアドレスが判れば、呼び出せます。 具体的には、ボタンのonclickにJumphomepage()が書かれているのでこの関数が呼ばれて、この中でwindow.openを呼び出します。 この時、 function Jumphomepage(url){ と書いておけば、 Jumphomepage('001.html')の様に呼び出した時には、 urlに'001.html'がセットされるので、 window.open(url, "タイトル", "toolbar=yes,location=yes,menubar=yes,status=yes,resizable=yes"); と書いておけば window.open('001.html', "タイトル", "toolbar=yes,location=yes,menubar=yes,status=yes,resizable=yes"); の意味になります。 なので、001.htmlが新しいウインドウで開かれることになります。
補足
良くわかっていなくてすみません。 関数を function Jumphomepage(url){ window.open(url, "タイトル", "toolbar=yes,location=yes,menubar=yes,status=yes,resizable=yes"); ボタンの方の記述を <TD><INPUT ID="JumpHP" TYPE="button" VALUE="詳細" onClick="JumpHomepage(url)"></TD> にすると、「urlは宣言されていません」 というエラーが出ます。 function Jumphomepage(){ と onClick="JumpHomepage()" の組み合わせ ですと、「オブジェクトを指定してください」 ということになります。 はじめのうちに触っていたときには ファイルが開くには開いていて、ただ問題だったのが どの行のボタンを押しても一番上の001.htmlにしか ジャンプしませんでした。 確率的には、一番最後のが合ってそうなんですが あまり触りすぎてわからなくしてしまいました・・・ この後の対処法を教えていただけますでしょうか? 何度もお手数をおかけして申し訳ないです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
CSVを読み込んで、動的にテーブルを作成してQ1の部分(ボタン)を作ってるんですよね。 だったら、その時に、 onClick="JumpHomepage()" の部分を onClick="JumpHomepage('001.html')" になるようにhpを取り出して作成するのが楽だと思います。 ボタンを押したときに実行されるjavascriptは、クライアント側で実行されるので、ユーザ実行時にフィールドの取り出しはできませんから。 もし、javascriptの中に取り出したフィールドの中身を埋め込みたかったら動的に<script>部分を作らなくちゃいけませんし、また、とても面倒です。 リンクを開く関数をurl指定で呼び出せば 関数の方では function Jumphomepage(url){ window.open(url,… となって簡単です。
補足
ご回答ありがとうございます。 表は同じ内容で以下、30件以上続きます。 それぞれに「詳細」があります。 onClick="JumpHomepage('001.html')" の001.htmlをCSVの hp の項目に 記述してあるのですが、そのURLを取得させて 各行ごとに指定してあるページを開かせることは できますか? リンクを開く関数をurl指定で呼び出せば 関数の方では window.open(url,… の部分も具体的に良くわからないのですが onClick="JumpHomepage('001.html')" とボタンの方を設定した場合 関数がfunction Jumphomepage(url){ の形になるということですか? 良くわかっていなくて申し訳ないですが よろしくお願いします。
お礼
初めてのことでJAVAとJscriptが違うのもわかっていなくて・・・カテゴリも違ってますね・・・ ご迷惑をおかけしました。 1回目から無謀な挑戦だったかもしれないです・・・ ご提示頂いたサンプルは、私が思っていたとおりの 動き方をするものでした。ありがとうございます。 VBAは少しやったことがあるので、データの扱いや 考え方のおよそのことはわかります。 頂いた、サンプルも意味を読むことができましたので こちらをベースにさせて頂き、少しずつ手を加えながら 完成できるようにがんばります! 本当にお世話になりました。 心より御礼、ならびにお詫び申し上げます。