

皆様のお力をお借りし、javascriptを利用してリンク先の変更を無事解決できました。
次に行おうとしたのが外部ファイル(js)にて呼び出そうと試みましたが、
jsファイル内にhtmlが入っている為、不可能だということも解かりました。
html内に複数のjavascriptを、しかもテーブル内に載せてみたのですが
全てが同時に動いたり、全て動かなかったり、上のテキスト領域に記入したのに
下のリンク先が変更になっていると言う様な、良く解からない状況になりました。
下記が現在の状況なのですが、どなたか改善点をご教授願えませんでしょうか?
・・贅沢と我侭を言えば、正解をそのまま記載していただきたいです・・・。
===ここから====
<table border="1" width="300" height="100">
<tbody>
<tr><td height="100">
<script>
function change(){
var change=document.getElementById("change");
var tags=document.getElementsByTagName("a");
for(var i=0;i<tags.length;i++){
var url="http://aaa.bbb.ccc/";
var url2="?ddd=";
var url3="eee";
var url4="&fff=";
if(tags[i].href.match(url)){
tags[i].href=url+url2+url3+url4+change.value;
};
}
}
</script>
<a href="http://aaa.bbb.ccc/?ddd=eee&fff=xxxxx" target="_blank">
<img src="http://aaa.bbb.ccc/image/ddd.gif"></a>
<br>
<input type="text" id="change"><input type="button" value="変換" onclick="change()">
</td>
</tr>
</tbody>
</table>
<br>
<table border="1" width="300" height="100">
<tbody>
<tr><td height="100">
<script>
function change(){
var change=document.getElementById("change");
var tags=document.getElementsByTagName("a");
for(var i=0;i<tags.length;i++){
var url="http://000.111.222/";
var url2="?333=";
var url3="444";
var url4="&555=";
if(tags[i].href.match(url)){
tags[i].href=url+url2+url3+url4+change.value;
};
}
}
</script>
<a href="http://000.111.222/?333=444&555=xxxxx" target="_blank">
<img src="http://000.111.222/image/333.gif"></a>
<br>
<input type="text" id="change"><input type="button" value="変換" onclick="change()">
</td>
</tr>
</tbody>
</table>
===ここまで====
自分の出来る範囲を超えているのは重々承知しておりますが
何とか実現したい事ですので、どうか宜しくお願いします。
No.3ベストアンサー
- 回答日時:
う~~ん。
よくわかんないけど…なんか、わざわざ難しくしてませんか?
いろんなことに挑戦するのも悪くないけど、まずは足元を固めてから。
ソースだけでは意図までは不明ですが、要は、serchの一部にテキストボックスからの入力値を入れたいということだと想像しました。
テキストボックスと画像の関係が1対1なのか、離れているのかも不明だけれど、多分、傍にあるやつだけが関連を持っていて、離れているもの同士は関係ないんですよね?
(スクリプトは常に、全画像をチェックしているみたいなので…)
テクストボックスの値をserchに入れるのはinputタグのもともとの機能なので、それを利用すればスクリプトなど使わなくてもできませんか?(というか、それが本来の方法)
そのほうが素直でわかりやすいし。(って言いながら、スクリプト入ってるけど…)
全体像(=最終的な形)のイメージが不明で、ジャンプ先もよくわからないので、全然違ってるのかも知れませんけど、↑のソースから想像して、こんなことがやりたいのではないかと。
<html>
<head>
<style type="text/css">
td.hoge {width:300px;height:100px;border:2px ridge white;}
td img {border:1px solid blue; cursor:pointer;}
</style>
</head>
<body>
<table>
<tbody>
<tr><td class="hoge">
<form method="GET" action="http://aaa.bbb.ccc/" target="_blank">
<img src="http://aaa.bbb.ccc/ddd.gif" onClick="submit()">
<br>
<input type="hidden" name="ddd" value="eee">
<input type="text" name="fff" value="xxxxx">
</form>
</td></tr>
<tr><td><br></td></tr>
<tr><td class="hoge">
<form method="GET" action="http://000.111.222/" target="_blank">
<img src="http://aaa.bbb.ccc/ddd.gif" onClick="submit()">
<br>
<input type="hidden" name="333" value="444">
<input type="text" name="555" value="xxxxx">
</form>
</td></tr>
</tbody>
</table>
</body>
</html>
*「変換」ボタンは不要なので、はずしてます。
ボックスに値を入れて画像クリックすれば、GET形式でsubmit。
No.2
- 回答日時:
> 俺は素直な人間じゃないんだ!
> 別に喧嘩売るつもりはない。
それは別にかまいませんよ。
言いたいことはちゃんと言えばよい。
> しかし貴方の回答は回答ではない。
そうかもね。アドバイスのつもりだから
回答はあなたに見つけ出して欲しかった。
> ちなみに、urlに分ける事に関してはやってみればわかるよ。
言ってなくて悪かったけど、試した上で問題なかったので分からないと書きました。
ちゃんとコード提示してくれてるから動作確認しやすかったしね。
あと改善点についても、ANo.1の修正で動作することも確認してます。
(ANo.1最後の1行ね。)
そうそう、Firefoxで動作確認してたから後になって気づいたけど、
http://000.111.222/
このURLはIE7だと
http://0.111.0.222/
として扱われてしまうので、matchでマッチしなくなってしまいます。
実際にはこんなURLは使わないと思いますが、
テスト時に使ってはまる可能性はありますから念のため注意しておきます。
もう一点。
正規表現において.(ドット)は任意の1文字という意味を持つので、
match("http://aaa.bbb.ccc/")
は
"http://aaaxbbbxccc/"
のような文字列にもマッチしてしまいます。
これは少なくとも今回は問題になっていないようですが、
今後問題になる可能性もありますから指摘しておきます。
> 安直にいかないから質問しているんだよ。
だからといって、質問すれば安直にいくと思ってるわけではないんでしょう?
回答者と一緒に悩み考える気はあったのでは?
> 解からないなら無視すりゃ良いだろ。
分からない点を無視するような姿勢は技術者としてどうかと思うけどね。
分からない点とは無視する物ではなく、とことん突き詰める物です、私にとっては。
> 無知だと思って遊んだつもりなのか?
コードを提示してるなど質問の仕方が適切で
やる気も感じられたからちょっと細かい部分にも触れてみました。
正直一度に全部は理解してもらえないかとも思いましたが、
そんなのは聞き返してくれればよいと思ってた。
> もしかしたら答えなのかもしれないが
> 君の言っている言葉が全く解からないんだ。
じゃあどこが分からないのか私がうんざりするくらい聞き返してみたら。
いや、分からないから無視するんでしたか…。
> 簡単に誰にでも説明できない位の能力なら顔出すなって!
回答を理解できない位の能力なら質問する意味がないから顔出すなって
っていうのと何が違うんだろう。
あなたには理解できなくても他の人には有用な情報になるかもしれないんだから
あなたの都合で回答者を限定するのはわがままだと思う。
(強制力がある訳じゃないので言うのは自由なんですけどね。)
自分に理解できない回答はするなとか私には考えられないな。
理解できるように努力しても良いし、
将来の自分にとって有用な情報になるかもしれない、
もし本当に役に立たなければ無視すればよい。
なにより無用な制限をすると貴重な情報を得る機会を失ってしまうかもしれない。
最後に。私もあまり素直な人間ではないようです。
No.1
- 回答日時:
> 次に行おうとしたのが外部ファイル(js)にて呼び出そうと試みましたが、
> jsファイル内にhtmlが入っている為、不可能だということも解かりました。
別に不可能とは言ってない。
jsファイルにhtmlを入れなければできると言ったつもり。
htmlはhtmlファイルの方に書けばよいでしょ?
どうしてもjsファイルの方に書きたければ、
htmlを出力するJavaScriptを書く手もある。(あまり好きではないけど。)
> 下記が現在の状況なのですが、どなたか改善点をご教授願えませんでしょうか?
- idは1つのHTML内で唯一無二でなければならない。
だいたい同じidが有ったらgetElementByIdでどうやってそれらを区別するの?
- function change() が複数定義されている。(たぶん後で定義した方が有効になってる。)
別名にするか1つにするべき。1つにした場合は引数で動作を変更できるようにする。
- hrefを書き換えるA要素が決まっているなら
全てのA要素から検索するよりもA要素にもidつけた方が良くないか。
- 間違ってるわけではないけど、document.write等を使わないなら
script要素はheadの方に書いた方が良くないか?
今の方が見やすいならこのままでも良いけど。
- url2,url3,url4を分けている理由が分からない。(将来別々に取得する予定でもある?)
とりあえず動けばよいって言うなら、
関数名とidを変更してください。(安直にはchange1,change2とか。)
この回答への補足
ご回答ありがとうございます!
と・・言いたい所だが、すまん!
俺は素直な人間じゃないんだ!
別に喧嘩売るつもりはない。
しかし貴方の回答は回答ではない。
こっちは解からないと悩んで考えて質問・投稿しているんだよ。
それを、~~ではないか?とか理由がわからないとか。
ちなみに、urlに分ける事に関してはやってみればわかるよ。
要素を言っているのではない。
安直にいかないから質問しているんだよ。
解からないなら無視すりゃ良いだろ。
無知だと思って遊んだつもりなのか?
もしかしたら答えなのかもしれないが
君の言っている言葉が全く解からないんだ。
簡単に誰にでも説明できない位の能力なら顔出すなって!
少なくとも、これまで私に対し丁寧にきちんと
答えてくれた人の説明は手取り足取りの如く理解できたよ。
失礼します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルから画像名を取得し...
-
テーブルの背景色を複数変更する
-
Javascriptでテーブルタグの座...
-
テーブルの外にマウスを出した...
-
別窓で画像を表示する場合に余...
-
<td>の中を移動する、外部J...
-
【jQuery】tableループ内のIDの...
-
DIVで同一ページ内にポップアッ...
-
idの振り直しについて
-
JavaScriptでイメージを自動的...
-
新しくフォルダを作成したい
-
return trueとreturn falseの用...
-
<input>の選択肢をプルダウンメ...
-
文字数を数える際に空白、改行...
-
Selectボックスの幅を自動で広...
-
プルダウンで選択すると、DBの...
-
プルダウン 項目が多いので先頭...
-
チェックボックスのON/OFFでVal...
-
時間の比較は可能でしょうか?
-
HTMLのテキストボックスへのド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<JavaScript>tableタグを入力不...
-
selectのonChangeが動作しません
-
画面表示とともに、テーブルの...
-
プルダウンメニューを表の中に...
-
【jQuery】tableループ内のIDの...
-
テーブルの行数を可変長にした...
-
tbody要素のinnerHTMLが書き換...
-
クリックごとに文字色が交互に...
-
javascriptでクリックするごと...
-
javascriptで<table>背景色の取得
-
javascriptで画像をテーブルに...
-
下記のようなメニューを作成し...
-
テキストエリアに入力した改行...
-
csvファイルのデータを変数とし...
-
Table内TDの子要素を移動させた...
-
カレンダーに印を付けたい
-
javascriptで表に画像を貼る
-
onMouseでbackgroundの画像を変...
-
<td>の中を移動する、外部J...
-
table内で上下するfloating men...
おすすめ情報