+ JavaScript の質問用スレッド vol.49 +
んーーー
xxxxxxの部分に日本語が入ってるわけでもないよね?
キャッシュが残ってるとかってオチだったりして
どっかほかにエラーがあるんじゃないかと
prtotype.js、scriptaculousあたりはテンプレに加えてもいいんじゃねーの
ライブラリについては需要が多ければ専用スレが立つのでは
ということでこれまで無視してきたけどどうするかね?
942 :
Name_Not_Found:2006/08/18(金) 18:35:33 ID:YkUOPTHB
943 :
Name_Not_Found:2006/08/19(土) 01:55:37 ID:5ahFeV0I
テキストボックスに入力した名前のサブウインドウをリサイズさせたいのですが、
ウインドウ名からそのウインドウオブジェクトを取得する方法を教えてください。
同様の機能が実現できる別案でも結構です。
<HTML><HEAD><SCRIPT>
function act(){
w=document.forms[0].elements[0].value;
/** obj=???( w ); 入力されたウインドウ名のオブジェクトを取得 */
obj=window.open( "", w ); /** これの戻り値相当のものをとりたい */
obj.resizeTo( "320" , "240" );
return true;
}
</SCRIPT></HEAD><BODY>
<FORM onSubmit="act();">
<INPUT><INPUT type="submit">
</FORM></BODY></HTML>
onmouse で テーブルのセル内の色を変えたいのですが、
よく出てくる表記の仕方 onmouseover="this.style.backgroundColor=''; だと、
色を変えたいセルがいくつもあるのと、ひとつひとつ<TD>の中に入れるのが大変なので、
一括で指定したいと思っています。(変わる色はまったく同じでかまいません)
検索してみて
ttp://www.parkcity.ne.jp/~chaichan/qanda/qa5684.htm のページを見つけたのですが、
指定されたIDのセルのみ動作するようにしたいのですが方法が分かりません。よければご指導ください。
>>943 それで取れると思うけど?フォームを提出してしまってるから
いけないんじゃないの。buttonにしてonclickで動作してみたら。
>>945 まだ問題設定が明確でないんだけど。「idのリストを用意して、これらのidを
持つセル全部についてonmouseoverで色を変更する」でいいのかね。それなら
var a = ['id1', 'id2', ...];
for(var i in a) {
var e = document.getElementById(a[i]);
e.onmouseover=function(x){return function(){x.style.backgroundColor='pink';};}(e);
}
もちろん上記が「すべてのidが出て来た後で」実行されるように最後に入れる
かbodyのonloadで実行されるかするように。
>>945 このスレッドの性格からしてヒントだけを書いておく:
これは Bookmarklet 化が可能だ.
もちろん, body onload で呼び出すこともできる.
おいおい…
>>945 のサイト見る奴皆がそのbookmarklet入れて自分で
それを選べってのかね。おかしすぎ。
やっぱり隔離スレが必要なんじゃないの?
次スレは975超えたら。テンプレは基本的に従来通り、参考サイトの
ショボイの2件とアクセスできないものは削って
>>930 を入れる。
ライブラリは先送り。くらいでどお?
>>978 説明不足かも知れないな.
"Bookmarklet にできる" と言う意味は
"HTML 部を一切いじらないで実現可能だ" ということ.
念のために Bookmarklet を張り付けておく :
javascript:function SetAttr(){var Td,l;Td=document.getElementsByTagName('td');l=Td.length;for(i=0;i<l;i++){Td[i].setAttribute('onclick',"style.backgroundColor='#660000'")}}SetAttr()
ここの質問者なら onload で動作するように書き換えられるはず.
注意 :
IE5.17(Mac版) では動かない.
(setAttribute をサポートしていない)
>>945 を良く読んでいなかった...
しかし, id を振っていくのなら
onmouseover="~" を書きこむのと手間は大して変わらない.
根本的に考えを改めるべきだ.
誰かさっさと隔離スレ立ててくれ。スレの無駄づかいかなわん。
次スレのテンプレは
>>920>>921からしょぼいのを削除、
>>930はいらないんじゃないか。1.6のときも載せてないし
特定のブラウザのみで動く情報はこのスレにはあまり求められてないと思う。
956 :
Name_Not_Found:2006/08/19(土) 16:48:54 ID:El8mXc24
>>947 >このスレッドの性格からしてヒントだけを書いておく:
そんな性格だったのか・・・・
--- HTML -------------------------------------------
<div id="hoge"></div>
<div id="hello"></div>
<script>addInputButton();</script>
--- JS ----------------------------------------------
function addInputButton() {
var input = document.createElement('input');
input.setAttribute('type', 'submit');
input.setAttribute('value', 'Hello');
input.setAttribute('onclick', 'hello();');
$('hoge').appendChild(input);
}
function hello() {
$('hello').innerHTML = 'Hello!';
}
上記の関数を実行するボタンをDOMで追加するスクリプトを FireFox と IE でテストしました。
両方とも hello ボタンが表示されました。
しかし、IEではボタンを押しても hello() が呼び出されないようなのです。
IE と FireFox の両方で動くようにするにはどうしたらよいでしょうか。
function addInputButton() {
var input = document.createElement('<input onclick="hello();">');
input.setAttribute('type', 'button');
input.setAttribute('value', 'Hello');
//input.setAttribute('onclick', 'hello();');
document.getElementById('hoge').appendChild(input);
}
冗談のようなホントの話
すいません、selectフォームのonChangeで関数を呼びだす時に、
引数として現在選択されているoption値を指定したいんですが、
formタグなしでthis参照みたいな相対的な指定でやる方法がよくわかりません。
<select name="test" onChange="hoge(this.test.value)">
みたいな感じで書いてみたんですが、うまく動かず…。
どなたかアドバイスなど頂けたらうれしいです。
<select onchange="alert(this.value)">
<option value="値1" selected>項目1</option>
<option value="値2">項目2</option>
<option value="値3">項目3</option>
</select>
this で参照したいのか name 属性で参照したいのかどっち?
961 :
943:2006/08/19(土) 18:54:15 ID:5ahFeV0I
>>946 ご指摘のとおりできました。
window.open(""); でブランクページが表示されると思い込んでいたのですが、
試してみたらそうではなかったようです。
ありがとうございました。
>>957 input.onclick = hello;
963 :
957:2006/08/19(土) 19:17:29 ID:???
>>958 なんですかそれ・・。って、IEで動いた!すげー
しかしFireFox で以下のエラーがでて動きません・・・
エラー: uncaught exception: [Exception... "String contains an invalid character" code: "5" nsresult: "0x80530005 (NS_ERROR_DOM_INVALID_CHARACTER_ERR)" location: "xxxxxx"]
>>962 FireFox, IE 両方で動作確認取れました。thx
>>960 できました!ありがとうございます
参照は選択中のvalueがわかればthisでもnameでもどっちでもよかったんですが、
nameで試してもうまくできなかったのでthisの方が簡単そうですね。
965 :
Name_Not_Found:2006/08/19(土) 20:44:25 ID:nKLXZV7e
ツリー式のメニュー表示について質問です。
<SCRIPT language="JavaScript">
<!--
function menu(id){if(document.all(id).style.display == "none")
{document.all(id).style.display="block";}else
{document.all(id).style.display="none";}}
//-->
</SCRIPT>
<A HREF="JavaScript:menu('tree');">メニュー</A><BR>
<DIV ID="tree" style="display:none;">
┣ 1<BR>
┣ 2<BR>
┗ 3<BR>
</DIV>
上記の動作確認をwinでしたところIE opera共に正常に動きましたが、
firefoxでは動作しませんでした。色々試してみると、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
を記述していると動作せず、記述していない場合にのみfirefoxでも
動作することが確認できました。DTDを記述した状態でもfirefoxで
ツリー式のメニューを動作させるにはどうしたらいいでしょうか。
var d = document.getElementById(id).style.display;
d = (d == 'none') ? 'block' : 'none';
967 :
965:2006/08/19(土) 21:38:52 ID:???
ありがとうございます。firefoxでも動作確認できました。
実行.jsを.swfにするには、どうしたらいいですかね?
969 :
Name_Not_Found:2006/08/20(日) 01:26:44 ID:0yCV4d5h
バナーのtitle属性をバナーの右横または下に書き出したいのですが、どういう
スクリプトを組めばいいのでしょうか?
バナーのhtmlを貼っておきます
<iframe frameborder="0" scrolling="no" allowtransparency="true"
height="14" width="110"
src="(バナーのURL)&fg=%23ffffff&bg=%23000000&ritv=45">
Unknown</iframe>
>>968 ActionScript を埋め込めばいいんじゃないですかね?
Flash 板に行ってください
>>969 ドメインが同じならどうとでもなる
972 :
Name_Not_Found:2006/08/20(日) 17:32:49 ID:eaKP0/FM
javascriptでテキストの名前を<input type ="text" name ="A[0]">
として、javascriptでname ="A[0]"の値を拾いたいんですが
どのようにしたらよろしいでしょうか?ご教授お願いいたします。
974 :
Name_Not_Found:2006/08/20(日) 18:17:35 ID:JtcFN3i4
フレームを使っていないページから、インラインフレームを使ったページを、
そのフレームに収まるページを自由に指定しながら切り替える。
ということをしたいのですが、うまくいきません。
新しい窓で開き、その後でフレームの中身を入れ替えるというのはできるのですが、
現在の窓をそのまま使って、新しいページにするのがうまくいきません。
ヒントをいただけるとありがたいのですが。
よろしくお願いいたします。
975 :
Name_Not_Found:2006/08/20(日) 20:24:26 ID:ZN9t6GQ7
>>974 前半の意味はわかったけど、
後半を日本語でよろしく。
↓下の単純なプログラムで「成功」と表示させたいんですが
「ここをクリック」を押すとブラウザが止まります (Firefoxでエラーなしだけど止まる)
なんか根本的に違うような気がするんですがどうしたらいいかさっぱり分かりません
■index.html
<script type="text/javascript" src="system.js"></script>
<div id="AAA"></div>
■system.js
start();
function start(){
document.write("<a onclick='open();'>ここをクリック</a>");
}
function open (){
document.getElementById("AAA").innerHTML = "成功";
}
openっていう関数名を変える
979 :
Name_Not_Found:2006/08/20(日) 21:34:15 ID:JtcFN3i4
>>976 インラインフレームのあるページを別窓で開き、その後でそのフレームの中身を入れ替える
という作業を、javascriptをつかって1クリックだけで実行させるのは可能なんですが、
窓を増やさずにフレームの中身を指定しながらインラインフレームのあるページを
開くことができません。
(フレームの中身を変更することができません。)
と言いたかったのです。
伝わってるでしょうか?
980 :
Name_Not_Found:2006/08/20(日) 22:18:33 ID:M48C+LLC
カーソルがウィンドウから離れた時に起こるイベントを取得するイベントハンドラってないですか?
>>980 ないと思うけど。離れるとフォーカスが外れる環境(洩れのはそう)
ならonblurが使えるけどね。
>>979 そのインラインフレームのあるページにJavaScriptを仕込めるなら
どうにでもできるが、それができないと難しいね。ページが切り替わる
ときに現在のページのスクリプトは消えてしまうから。ちょっと苦しい
けど、真っ白な別窓を開きそこでスクリプトを動かして現在ページの
切替えとインラインフレーム中身の入れ換えを行わせ、終わったら
その別窓を自ら閉じる、というくらいならできるね。
>>978 start()だとかopen()だとか標準で使ってるものと衝突しそうな
名前の関数を作るなボケ!
>>977 テンプレのFAQを熟読しろボケ!
982 :
Name_Not_Found:2006/08/20(日) 23:39:16 ID:mXKnlOfe
<INPUT type="file"> の[参照]ボタンをクリックしたときだけ
イベントを発生させたいのですが、どうすればできるでしょうか?
入力エリアをクリックした場合はイベント発生させたくないのです。
983 :
978:2006/08/20(日) 23:43:04 ID:???
なぜ俺に…
>>983 ごめん誤爆。
>>982 type="file"はセキュリティ上の理由から捕捉できないんじゃないかなー。
985 :
982:2006/08/20(日) 23:52:08 ID:mXKnlOfe
>>984 そうですか。回答ありがとうございます。
979
>>981 レスありがとうございます。
やりたいことは単純なのに、実現させようとすると
妙に手間がかかりそうですね。
参考にさせていただきます。
ありがとうございました。