![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?08b1c8b)
初心者です。
比較的簡単なデータベース検索システムを作っています。
検索に必要な文字列を入力するテキストフィールドを3つ用意し、各フィールドの横にそれぞれ「検索」ボタンを配置しています。
1番上のテキストフィールドに文字列が入力され、「検索」ボタンが押されたらtest1.txtの中の該当するデータが1番目のテキストフィールドの下に表示され、2番目のテキストフィールドに文字列が入力され、「検索」ボタンが押されたらtest2.txtの中の該当するデータが2番目のテキストフィールドの下に表示され…、という具合です。
この検索システムが1つであれば、望むような結果が表示されるのですが、3つにすると思うように結果が出ません。
「どのボタンが押されたか」を判別するか、もしくは「どのファイルが読み込まれたか」をIF文でうまく組み込めばいいのかとも思いますが…。
どなたか、教えてください。
よろしくお願いします。
<現在のコードです>
findText = "";
function loadDataFile(fName)
{
findText = $("searchText").value; // 検索する文字
new Ajax.Request(fName, { method: 'get', onComplete: displayData });
}
function displayData(httpObj)
{
$("result").innerHTML = parseTabText(httpObj.responseText);
}
// タブ区切りテキストを解析して一致したデータを表示
function parseTabText(tabText)
{
var resultText = "<table border='1' cellpadding='5'>";
var LF = String.fromCharCode(10);// 改行コード (LF)
var TAB = String.fromCharCode(9);// タブコード
var lineData = tabText.split(LF);
for (var i=0; i<lineData.length; i++)
{
var itemData = lineData[i].split(TAB);
var str = itemData[0].match(findText);
if (str)
{
resultText += "<tr><td align='left'>"+itemData[0]
+"</td><td align='left'>"+itemData[1]
+"</td><td align='right'>"+itemData[2]+"</td></tr>";
}
}
resultText += "</table>";
return resultText;
}
<body>
<h1>test1</h1>
<form onSubmit="loadDataFile('test1.txt');return false">
<input type="text" value="" id="searchText">
<input type="button" value="検索" onClick="loadDataFile('test1.txt')"><br>
</form>
<div id="result"></div>
<h1>test2</h1>
<form onSubmit="loadDataFile('test2.txt');return false">
<input type="text" value="" id="searchText">
<input type="button" value="検索" onClick="loadDataFile('test2.txt')"><br>
</form>
<div id="result"></div>
<h1>test3</h1>
<form onSubmit="loadDataFile('test3.txt');return false">
<input type="text" value="" id="searchText">
<input type="button" value="検索" onClick="loadDataFile('test3.txt')"><br>
</form>
<div id="result"></div>
No.1ベストアンサー
- 回答日時:
・ id属性は、ユニークである必要があります。
次のようにしてみてはどうでしょうか。
------------------------------------------------------------
<html>
<head>
<script type="text/javascript">
<!--
var findText = "";
var resultNUM;
function loadDataFile(num) {
var fName = 'test' + num + '.txt'
findText = $("searchText"+num).value; // 検索する文字
resultNUM = "result" + num;
new Ajax.Request(fName, {method:"get", onComplete:displayData});
}
function displayData(httpObj) {
$("resultNUM").innerHTML = parseTabText(httpObj.responseText);
}
// タブ区切りテキストを解析して一致したデータを表示
function parseTabText(tabText) {
var resultText = "<table border='1' cellpadding='5'>";
var LF = String.fromCharCode(10); // 改行コード (LF)
var TAB = String.fromCharCode(9); // タブコード
var lineData = tabText.split(LF);
for (var i = 0; i < lineData.length; i++) {
var itemData = lineData[i].split(TAB);
var str = itemData[0].match(findText);
if (str) {
resultText += "<tr><td align='left'>" + itemData[0] + "</td><td align='left'>" + itemData[1] + "</td><td align='right'>" + itemData[2] + "</td></tr>";
}
}
resultText += "</table>";
return resultText;
}
//-->
</script>
</head>
<body>
<h1>
test1
</h1>
<form onSubmit="loadDataFile('1');return false">
<input type="text" value="" id="searchText1">
<input type="button" value="検索"
onClick="loadDataFile('1')">
<br>
</form>
<div id="result1"></div>
<h1>
test2
</h1>
<form onSubmit="loadDataFile('2');return false">
<input type="text" value="" id="searchText2">
<input type="button" value="検索"
onClick="loadDataFile('2')">
<br>
</form>
<div id="result2"></div>
<h1>
test3
</h1>
<form onSubmit="loadDataFile('3');return false">
<input type="text" value="" id="searchText3">
<input type="button" value="検索"
onClick="loadDataFile('3')">
<br>
</form>
<div id="result3"></div>
</body>
</html>
この回答への補足
ご回答、ありがとうございます。
作成していただきました上記のスクリプトをペーストして動作させてみたところ、「検索」ボタンをクリックしても動作しません。
なにぶん、初心者なので、
どの箇所を修正すればいいのかもわからず…。
すみません。
No.2
- 回答日時:
・ resultNUM は、変数であり使い方が間違っていました。
大変申し訳ありません。function displayData(httpObj) {
$("resultNUM").innerHTML = parseTabText(httpObj.responseText);
}
ではなく
function displayData(httpObj) {
$(resultNUM).innerHTML = parseTabText(responseText);
}
です。
・ Ajaxを利用しているので、関数$()も使えるようにはなっていると思います。このソースコードのままでは動きません。
・ var str = itemData[0].match(findText);
は、タブ区切りの最初のデータからのみ検索しているようですね。
・ itemData[1],itemData[2], ... は、括弧を検索文字列に挿入したときに返されますが、現在は何も入っていません。
ありがとうございます!
無事、解決しました!
このような便利なシステムを作りこんでいくと、いろんなケースが出てきて完成するまでに時間がかかりますね。
JavaScriptも奥深くて迷うことだらけですが、
がんばりたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
jsで質問です。 ボタンが二つ存在し、両方のボタンがクリックされたことをチェックしたいのですが、どの
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでhiddenに二次元配...
-
setIntervalの間隔を途中で変更...
-
自動的に連番生成したURLにリン...
-
eval()を使わずに数値を取得し...
-
ダミーフォームの内容を送信用...
-
フォーカスすると初期値が消去...
-
子から親へチェックボックスの...
-
プルダウンで選択された値を別...
-
return trueとreturn falseの用...
-
ボタンかリンクをクリックする...
-
同じ名前のセレクトがある場合...
-
フォームのPOSTデータをサブウ...
-
テキストボックスに数字しか入...
-
onchangeイベントを強制的に発...
-
フォームで開始時間と終了時間...
-
フィールドを有効(enabled?)に...
-
JavaScriptで特定のtdタグにcla...
-
ダイアログの出し方について
-
二つの入力欄に、同時に同じ文...
-
ラジオボタンのチェックが外れ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
VB.NET DateTimeの型について
-
複数のsubmitボタンで押された...
-
javascriptでhiddenに二次元配...
-
JavaScriptによる自動計算フォ...
-
どのボタンがクリックされたの...
-
フォーカスすると初期値が消去...
-
javascriptにてHTMLのhiddenエ...
-
Jqueryを使って値の合計を簡単...
-
name属性が同じフォームが複数...
-
setIntervalの間隔を途中で変更...
-
eval()を使わずに数値を取得し...
-
チェックボックスのvalueをテキ...
-
ラジオボタンと連動して文字列...
-
Pythonで会員サイトの自動ログ...
-
親ページのフォーム入力データ...
-
selectboxのoptionタグのvalue...
-
テキストエリア内容からチェッ...
-
チェックボックスがundefinedと...
おすすめ情報