こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

検索バーについて

現在、下のソースを使い検索サイトを作成しています。今、yahooやgoogleのようにtopページでキーワードを入力して検索するところを作成できたのですが、その検索結果を結果ページで表示したいのですが、どうしても表示できません。ソースは下のとおりです。アドバイス等よろしくお願いします。説明が下手ですみません。
(topページ)
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>
<script type="text/javascript">
<!--
var site = new Array();
site[0] = ["Google", "http://www.google.com/search", "q",
["hl", "ja"], ["ie", "Shift_JIS"]];
site[1] = ["Yahoo", "http://search.yahoo.co.jp/bin/search", "p",["ei", "Shift_JIS"]];
window.onload = function() {
if (!document.createElement) return;
if (document.all && !window.clipboardData &&!window.opera) return;
var select = document.createElement("select");
select.id = "addlist";
for (var i = 0; i < site.length; i++) {
var opt = document.createElement("option");
opt.value = i;
var str = document.createTextNode(site[i][0]);
opt.appendChild(str);
select.appendChild(opt);
}
var obj = document.forms[0];
obj.elements[obj.elements.length - 1].value = "検索";
obj.insertBefore(select, obj.elements[1]);
obj.onsubmit = selectSearch;
}
function selectSearch() {
var str = document.forms[0].p.value;
var num = document.forms[0].addlist.value;
var setform = document.createElement("form");
setform.action = site[num][1];
setform.method = "GET";
setform.target = "_blank";
var query = document.createElement("input");
query.type = "hidden";
query.name = site[num][2];
query.value = str;
setform.appendChild(query);
if (site[num].length > 3) {
for (var i = 3; i < site[num].length; i++) {
var extra = document.createElement("input");
extra.type = "hidden";
extra.name = site[num][i][0];
extra.value = site[num][i][1];
setform.appendChild(extra);
}
}
document.body.appendChild(setform);
setform.submit();
return false;
}
// -->
</script>
<form action="http://search.yahoo.co.jp/bin/search" method="GET">
<input type="text" value="">
<input type="submit" value="検索">
</form>
</body>
</html>

(結果ページ)
<html lang="ja">
    :
topページのソースと全て同じソースです。
:
</form>
<iframe src="#" width="100%" height="82%" scrolling="yes" name="main" frameborder="0">ブラウザ</iframe>
</body>
</html>

投稿日時 - 2009-10-23 02:22:23

QNo.5389241

すぐに回答ほしいです

質問者が選んだベストアンサー

確か前回投稿された時は、
<form action="​http://search.yahoo.co.jp/bin/search"​ method="GET">
<input type="text" name="p" value="" size="50" maxlength=255 >
<input type="submit" value="検索">
だったはず。name="p"をとっちゃたんですね。
生成するセレクトボックスにオプションには、最初からあるフォームの
name="p"のvalueをセットする作りですよね。
前にも書きましたが、
document.body.appendChild(setform);
だけでは、選択するたびにhiddenのselectformが増え続けますよ。

投稿日時 - 2009-10-23 11:03:53

補足

アドバイスありがとうございます。
どうしたら、hiddenが増えずにすむでしょうか?
name="p"は付け忘れました。すみません。

投稿日時 - 2009-10-23 22:16:27

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

気づいたところだけ
selectSearch関数内で
var str = document.forms[0].p.value;
となっていますが、<form>の中にpがありません。ざっとソースを眺めても、pに置き換えているところが見当たらないので、
エラー発生 → スクリプト中断 → <form>のsubmit実行 → キーワードが正しく送られず、yahoo!がトップページにリダイレクト
といった状況ではないかと。

pとする箇所はたぶんここかな?
<input type="text" value="">
  ↓
<input type="text" value="" name="p">

はずれてたらすみません。。。

投稿日時 - 2009-10-23 03:03:53

補足

name="p"をつけるの忘れてました。すみません。

投稿日時 - 2009-10-23 22:18:13

あなたにオススメの質問