プロが教えるわが家の防犯対策術!

ファイル:index.html 001.html abc.csv

csvに
no、name、data1 data2 hp
のフィールドがあり、それを読み込ませて表を
index.htmlに作成するところまではできました。

hpのフィールドには詳細情報の書かれた
ファイルの名前、(今回ですと001.html)が
入力されています。

質問1
表の形式は番号、名前、データ1、データ2、で、
その右に「詳細」という文字の入ったボタンを
作成するにはどうしたらよいでしょうか?
現在は、マニュアルなどを参考に
以下のように入力してボタンは表示されています。

<TD><INPUT ID="JumpHP" TYPE="button"
VALUE="詳細" onClick="JumpHomepage()"></TD>

このあとこのボタンにリンクを貼りたいので
このような作成方法でよいのか教えてください。

質問2
1で作成したボタンをクリックしたときに
指定のページを開かせるJumpHomepage()を
作成しようとしているのですが、

<SCRIPT language="JavaScript">
<!--
function Jumphomepage(){
window.open(abc.recordset.Fields("hp").value,
"???",
"toolbar=yes,location=yes,menubar=yes,status=yes,resizable=yes");

}
//-->
</SCRIPT>

<OBJECT CLASSID="clsid:333c7bc4-460f-11d0-bc04-0080c7055a83"
ID="abc">
<PARAM NAME="CharSet" VALUE="shift-jis">
<PARAM NAME="DataURL" VALUE="abc.csv">
<PARAM NAME="UseHeader" VALUE="true">
</OBJECT>

ここまで考えてみましたがその後どうしたらよいのか
わかりません。window.openの後ろの()の中をどのような記述にすればよいのでしょうか?
また根本的にここが違うということがあればご指導ください。
初めてJAVAに取り組んでおります。詳しく教えていただけると嬉しいです。よろしくお願いします。わかりにくい点などありましたら、補足致します。

A 回答 (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>
    • good
    • 0
この回答へのお礼

初めてのことでJAVAとJscriptが違うのもわかっていなくて・・・カテゴリも違ってますね・・・
ご迷惑をおかけしました。
1回目から無謀な挑戦だったかもしれないです・・・
ご提示頂いたサンプルは、私が思っていたとおりの
動き方をするものでした。ありがとうございます。

VBAは少しやったことがあるので、データの扱いや
考え方のおよそのことはわかります。
頂いた、サンプルも意味を読むことができましたので
こちらをベースにさせて頂き、少しずつ手を加えながら
完成できるようにがんばります!

本当にお世話になりました。
心より御礼、ならびにお詫び申し上げます。

お礼日時:2005/04/22 10:05

>ボタンの方の記述を


><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
    • good
    • 0

>各行ごとに指定してあるページを開かせることは


できますか?
そういう話をしているつもりだったんですが・
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にしか
ジャンプしませんでした。
確率的には、一番最後のが合ってそうなんですが
あまり触りすぎてわからなくしてしまいました・・・
この後の対処法を教えていただけますでしょうか?
何度もお手数をおかけして申し訳ないです。

補足日時:2005/04/19 18:43
    • good
    • 0

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){
の形になるということですか?

良くわかっていなくて申し訳ないですが
よろしくお願いします。

補足日時:2005/04/18 16:44
    • good
    • 0

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