+ JavaScript の質問用スレッド vol.29 +
━━━━━JavaScript質問スレ道場訓━━━━━
一、礼節を重んじ常に努力精進すること
一、ブラクラに打ち勝つ精神力を持つこと
一、心身の優れたJavaScriptを学ぶこと
一、雑草の如く生涯JavaScriptを貫くこと
一、感謝と反省を忘れないこと
以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・まずFAQ(
>>2 )そして過去ログや関連資料を読むことができる者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
(質問時、回答時にはなるべく対象環境を明記しよう)
前スレ
http://pc5.2ch.net/test/read.cgi/hp/1084943518/l50 FAQ・過去ログ・関連資料・その他質問スレは
>>1-10
【質問を書く上で】 弱気な表現は避ける 弁解じみた表現は良くない。また、まわりくどい。 ex) 超初心者で何もわかりませんが…… <そんなことより自分で試したことをた方が答えやすい> 情報を小出しにしない 読み手は馬鹿にされた気分になる。 無駄な倒置も不要だ。 使用したブラウザ、バージョン、OSくらい書こう。 感情的にならない 何の説明なく決め付ける文はよい印象を与えない。 また態度の大きい人は嫌われる。 ex) 答えられねぇんなら黙ってろ!!! <お前だけだよ> 無視するべきものは無視する 無能、知ったかぶり、宗教的主張、煽り、ぬるぽ等。 表記ミスに注意 内容がどんなにすばらしくても文字使いにミスがあると誤解を招く。 曖昧文は書かない いくつにも解釈できる文章は絶対に書かない。 ex) ここではきものをぬいでください。 「」など無駄な強調は避ける 読みにくい。♪や顔文字も同様である。 ソースは要点を整理して出す。 そのまま貼って動かせると試してもらいやすい。 長い場合はアップロードしてURIを貼る。
おつかれ〜!
時はまさに世紀末 淀んだ街角で僕らは出会った
【FAQ/よくある質問と回答】 …テンプレに入れるのは賛否あるのでとりあえずここに書いときます。 Q1. JavaとJavaScriptって同じですよね? A1. 全然違います。型とかクラスはJavaだけ。DHTMLは普通JavaScript。 Q2. 開いた別窓/フレームの内容にアクセスできないのですが… A2. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q3. JavaScriptでローカルファイルを読み/書きたいのですが… A3. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Moz等)で対応済。 Q5. document.all(...)がNetscapeで使えないのですが… A5. それはIE専。標準のdocument.getElementById(...)を使いましょう。 Q6. Aタグのonclickで動作指定してるのですが時々動きません… A6. 「onclick="...;return false"」としないとページ移動しちゃうから。 Q7. フォーム部品名を変数にした「...myform.変数名.value」が駄目… A7. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 例:「obj.p0=obj.p1=...=obj.p8=0;」⇔「for(i=0;i<9;i++) obj['p'+i]=0;」。
正直
>>6 は いつだったかスレに変なのが沸いた時に
漏れが書いたものだが、もう不要と思われ。
というのも、テンプレが無駄に長くなるからだ。
そうだねえ、5まであれば十分かなあ。
14 :
Name_Not_Found :04/06/22 22:48 ID:GQMfUuAS
IE6 でウィンドウの高さを得るには document.body.clientHeight を使うと思うのですが, DOCTYPE スイッチで標準準拠モードにすると document.body.clientHeight がウィンドウの高さではなく body 要素自身の高さを返すようです. この挙動の是非は置いておくとして (Opera も後者のようです), 標準準拠モードでウィンドウの高さを得るにはどうすればよいのでしょうか.
>>12 まあ なんか変な奴が来たら
>>6 読め って書くだけで済むから便利だよ
>>15 この腐敗と自由と暴力の真っ只中
>>14 標準準拠モードでは最外側要素はdocument.bodyではなく
document.documentElementになるんじゃないの。
なんじゃ
>>11 は・・・
Qに対してどれもまともな回答になってないじゃないか。
よくこんな陳腐なのを作ったものだな。
たしかに、、、 内容をよく見てみると、かなりきてる。。。
マトモなものが全く無いとは言わんけどね。 相手するまでも無いと思って放っておいたんだけど、 スルーしてると どんどん図に乗ってくるもんなんだなぁ。
よっぽど自分の作ったものをテンプレに入れたがってるみたいだね。 スレーしてるより不要と言ってやらんと。
多くの質問に、多少のFAQで問題が解決するはずがない、と思うのだがどうだろう
このスレで実験するということじゃないのかな。それで
スレの終わりまでに「
>>11 のXX番をよめ」で済むことが
何回以上あったら成功だと思う?
>>23 とりあえず最低7回。(QAが7個だから)
で、参照されなかった番号はリストラ。
参照されなかったものを削るというのはいいなあ!
26 :
14 :04/06/23 09:38 ID:???
>>17 取れました,ありがとうございます.
…というかFAQっぽいですね(汗)
windowの高さとクライアント領域の高さは別物ってことも付け加えとけ
29 :
Name_Not_Found :04/06/23 20:15 ID:CP3uCzld
言葉を慎まれよ
JavaScript外部ファイルについて
http://external.pcc.jp/~biso/ ↑のサイトさんなんですが、ここ数日繋がらなくて本日やっと繋がったと思ったらパスワード制になってました
どうすれば入れるかわからないのですが誰かご存知の方いらっしゃったら教えてくださいませんか?
もし板違いでしたら恐れ入りますが誘導お願いします。
スレ違い。初心者スレへ逝け。
>>30 板違いだが、誘導といっても、答えられる奴はいないような気もする。
何のサイトか知らないが、管理者に問い合わせるしかないんじゃないの?
もしくは、ハッククラックの勉強をしてその道のプロになるといい。
誘導されてこちらにきました。よろしくお願いします。
日記用CGI Nicky!に
<!--
function txvad(){
document.sform.Message.value += document.sform.sel01.options(document.sform.sel01.selectedIndex).text;
return false;
}
// -->
body部分
<form name="sform">
<select name="sel01">
<option>あいうえお
<option>かきくけこ
<option>さしすせそ
</select>
<a href="#" onClick="return txvad()">入力</a> <br>
<textarea cols=25 rows=5 name="Message"></textarea> </form>
というのを『入力』ボタン無しで、セレクトするだけで入力されるようにしたいのですが、
このままですら、動きません。
自分なりにやってみたものが↓です
http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20040624034506711.txt 2564-2570行目:新規書込み画面のヘッダを足す
2436-2437行目:JavaScriptを足す
34 :
33 :04/06/24 03:57 ID:???
すれちがいですが悶絶のimiをおしえてください
>>38 そこ、リロードするとHTMLが(画像ファイル名が)変わるから
サーバ側でやってるんじゃないの。その場合WebProg板へどぞ。
あんたがやりたいことの内容によってはクライアント側だけで
(つまりJavaScriptで)できることもある。そっちを探求するの
ならやりたいことを具体的に分かりやすく説明してくれないと。
クライアントサイドとサーバサイドくらいは理解してて欲しい
先生、オフサイドが解りません。
質問です。 setIntervalで更新間隔に短い値を指定するとclearIntervalの認識が悪くなってしまうのですが これを改善する方法はないでしょうか? プログラムは下のように書いています。 ---------------------- function test() { click++; if(click == 1){ timerID = setInterval("Action()", 100); } if(click >= 2){ clearInterval(timerID); } } ---------------------- <div id="start" onclick="test()"></div>
>>42 そりゃ正確に1ミリ秒で実行してくれとか言われても困るだろう。
setInterval()を使う代わりにsetTimeout()で毎回自分を登録
するようにしてclickが2以上なら登録しないとかにしたらどうかな。
>>42 setInterval も setTimeout も、引数で渡すのは待ち時間で、
再帰関数化して繰り返したりする場合とかもそうだけど、
スクリプト自体の実行時間は別勘定になるから、ずれまくるもんだよ。
45 :
Name_Not_Found :04/06/24 17:57 ID:TM/Nbx1G
hrefプロパティは同じ文字列になっちゃうんだろ? じゃあhrefプロパティだけで判別するのは無理だってことだ ということはhref以外の識別できる要素を与えてやるしかない ここまで言えば後は分かるだろう
>>45 手元にWinIEがないのでこちらでは確認できないが、DOMのgetAttribute
メソッド使うとどうなる?
49 :
45 :04/06/24 22:22 ID:???
>>46 やっぱそうっすよね。
本来 <a href=""> なんてのはあり得ないわけで、もしも、あった場合の
安全装置として考えていたので。他を考えてみます。
>>47 漏れもちょうどやってみたところです。
http://〜が返r (略
どうも、ありがとう。
>>49 outerHTMLで比較するしかないのでは。
ちなみに空のURIは当該文書自身を示し
/foo/var.html に記述した href="" が /foo/ を参照するのは本当は間違い。
(でなきゃ href="#baz" が /foo/#baz を参照することになってしまう)
同じページに一枚絵のように別のcgiを埋め込みたいのですが、スキルが足りないせいでどうしても行き詰って ます _/TO 自分が考えているのは、そのリンクをクリックしたばあいに右側にリンク先のページを表示させたいのです。 こんな感じのソースにしたいのですが、無理なのかなあ。。 他のサイトでどういう風にしているのか、判らずじまい・・・。 厨ぽくて、すいません(ノ□T) <script language="JavaScript" type="text/javascript"> <!-- function chat(チャットのurl); // --> </script> </head> <body> <table> <tr> <td align="center" valign="top"> <a href="wl_index.html">TOP</a><br> </td> <td align="center" valign="top"> <script language="JavaScript" type="text/javascript"> <!-- document.write=chat // --> </script> </td> </tr> </table>
>>51 とりあえずテンプレのサイトで基本的なことを学んでから質問した方が
いいと思う。
たぶん、何をアドバイスしても分けわからんだろうから。
そんな書き方、どこでおぼえたの?
53 :
Name_Not_Found :04/06/25 20:05 ID:6YhDTYrI
あい、もっかい、勉強してきますです〜。
>>51 IFRAME使ってるだけじゃない?
まあその「他のサイト」ではどうなってるのかを自分で見た方が早いだろ。
>>51 のが、イメージを返す cgi へのアクセス、ということなら、
<img src="hoge.cgi?あqwsでfrtgyふじこlp;@:「」">
とだけ書いておけば済む、だろうね。で、そのイメージを切り替える
のであr
>>55 どうした?脳が破壊されつつあるのか?
>>51 あんたさあ、まずは
<script>
<!--
JavaScriptコード
// -->
</script>
のように行をきちんと変えた方がいいよ。にしても
あんたが書いているものはJavaScript的に無意味なんだが
ホント、どっからそういう書き方を学んだの?
57 :
Name_Not_Found :04/06/25 23:32 ID:+c+sy2NM
リロードするごとに一定の場所に表示される画像が 変わるようにするにはどうしたらいいでしょうか?
ランダムにする
>>57 <script type="text/javascript">
var imgs = ['img1.png','img2.png', ...];
document.writeln('<img src="' + imgs[Math.floor(imgs.length*Math.random())] + '">');
</script>
JSを切っている場合でも支障のないようにスクリプトを書いてくれ。 オレはJSは好きだけど、多くの場合切っているから。。。
ん?ランダム画像が飾りならほっとけばいいこと。 切った場合かわりの画像なり「JS切ったら使えない」 という説明を出すなら<noscript>...</noscript>に 囲んで入れとく。いちいち説明しないけどそゆことでしょ?
>>61 そうじゃなくて、document.writeを使わないで、onLoadでDOMを操作する
方法をとって欲しいなと。つまり、構造とプログラムを分離したいということです。
>>62 気に入らないなら代わりに回答してやれよ。
DOMの方がそういうメリットがあるよと言いたければ単刀直入に そう言って欲しいな〜。とりあえず入門レベルの人には document.write()がいけないってこたないと思うけどね〜。
...onloadでDOM操作は、確かに構造とプログラムの分離はできるが、 スクリプト無効環境下における支障の回避という面では document.writeと変わらんだろ。結局は配慮するかしないかなんだから。
onloadなんてかざりだよ
つーかJavaScriptでDOM操作自体単なる装飾だよ そう捉えれない奴らがスクリプト切ると見れないページ作るんだよねぇ
買い物かご作ったんだけど、クッキーで問題が出た。
商品ページと買い物かごのページは
http://自サイトドメイン/ 〜
なんだけど、住所とか入力するページからは鯖の無料SSLを使う
https://鯖のドメイン/ 〜
ドメインが途中で変わっちゃうんだけど、そうすると↑のドメイン&パスで焼いたCOOKIE
を↓の住所入力ページでは受け取れないんだよね。(受け取れるドメインって一つしか指定できないでしょ)
一応方法をいくつか考えてみた。
1.「注文に進む」ボタンをカートページにしかつけずに、カートページはいつも最新のカートの中身をhiddenで
持たせておいて、「注文に進む」ボタンを押した時にフォーム提出をする。
2.クッキーを二つ焼く。NAME=VALUEの内容は同一で、ドメインとパスの設定↑で挙げた二つにする。
3.カートのページもhttpsにしてしまう。
4.商品ページから全てhttpsにしてしまう。
それぞれの問題点
1.「カートの中身を見る」を経由しないと注文が始められないのは不便。
2.クッキーを二つ焼くのってアリ?なんか悪いことしてるみたいで、気が引ける。
3.これをやってしまうと、ブラウザの設定によってはhttpsとhttpの移動の度にアラートボックス
が出てしまい、かなりうっとうしい。
4.せっかくドメイン取ったのにそのドメイン使えるページが通販部分以外の2ページでは悲しい。
意見を聞かせて欲しい。
そんなページ、見なくていいじゃん?
>>67 どんなページだって「装飾だ」といえばそうなってしまうけどね。
いちいちページをリロードしない画像ビューアだとかツリーブラウザ
だとかそういうのもユーザインタフェースとしてアリだと思う。
ゲームなんかもね。JavaScriptを切ってそういうユーザインタ
フェースを使わない人もいるということを覚悟しておけばそれで
いいんじゃないの。
>>68 「注文に進む」ボタンが押されたら「お待ちください」ページに
飛び、このページはカートページと同様の内容を保持してhttps
側にすぐデータを提出する、というのはどうですかね。
72 :
68 :04/06/26 17:44 ID:???
>>71 自動でフォームを提出させるページを作るという事ですか?
URLのバーが途中で変わるのって客側としてはイヤな印象を持たれそうで怖いです。
「処理中です。少々お待ち下さい。」
が出てちょっと間を置いてドメインが変わってしまうと、
「ん?別のサイトに飛ばされたのか?」
みたいに思い、手口が少しエロサイトみたいで・・・・・;
食品を扱う会社なので、信用第一でやっているのですが、本来専用の有料SSL証明書を買えば
こんな問題もなくなるんですが、クレジットカードは扱わないので、十何万も出す程の
事ではないかなと思っています。
>>72 だったら全ページにhiddenで最新の内容を持たせるのが一番いい
んじゃないですかね。で、「注文に進む」ボタンが押されたら
そのフォームをhttpsサーバに提出すると。
74 :
68 :04/06/26 17:58 ID:???
>>73 やっぱそうですかね。ん〜。
実際のとこクッキーを二つ(ドメイン。パスだけが違う)焼くのってどうなんですかね?
悪いことですか?
あまりやったことないので良い悪いがわかりません;
>>67 うむ。
本気で動的なコンテンツ作って一般に公開したいなら
サーバサイドで組んだ方が閲覧環境広いしな
COKKIEを二つねえ。 俺やったことねえからよくわかんないね。 誰かやったことあるやついんの?
>>75 イケテル奴はJSとcgiをうまくからめて面白いものを作る。 JS切ってるやつには最低限の動作を 切ってないやつには最高のエンタメを
>>74 ドメインAが食べさせたクッキーをドメインBで読めないんだから
2つ使っても何の問題解決にもならないのでは?
>>75 動的たって動き方が違うでしょ。データをバシバシ管理するなら
サーバサイド。サクサク動かすユーザインタフェースメインなら
クライアントサイド。
80 :
68 :04/06/26 18:31 ID:???
>>79 え?
ドメインAが食べさせたクッキーをドメインBで読むのは可能だったと思いましたが・・・・
domain=値
path=値
の部分って今から焼くクッキーをどのドメインのどのパスの時に提出させるかっていうことですよね?
複数ドメイン可能かっていうのは実験環境がないので確信がもてませんが、
domain=値
っていうのはそのためにあるんじゃないのですか?他にdomain=値の使い道がわかりませんが・・・・
間違ってたら教えて下さい。
domainの使い方なんて知るかボケ
Netscapeのクッキーのドキュメントより: domain=DOMAIN_NAME (中略) Only hosts within the specified domain can set a cookie for a domain and ... (後略) つまりあるホストから「domain=...」で指定できる値はそのホストが属 しているドメインだけなのね。 host.a.b.c が domain=a.b.c を指定→○ host.a.b.c が domain=x.b.c を指定→× 「domain=」の用途は「特定ホストから食べさせたクッキーを同じドメ インの他のホストと共有するため」であり「他ドメインと共有する」 ことは許されていない。考えてもみなよ、自分のページでamazon.co.jp のクッキー捏造して食べさせてからAmazonに飛ばしてとかできたらヤバ すぎるでしょ。
>>77 いけてる香具師はそもそもCGIは使いません
>>79 まぁ、実際にはフォームを動的に扱わなきゃならんから
JavaScript全く使わずってのは難しいけどね。
ユーザーインターフェースメインの処理でも
例えば商用サイトとかは
可能な限りLowerLevelのユーザを配慮せにゃならんけん
シングルクリックでa.htmlのサブウィンドウ、ダブルクリックでb.htmlのサブウィンドウを開かせることはできますか?
>>83 > いけてる香具師はそもそもCGIは使いません
それはない
>>84 IE専ならonclickとondblclickを使い分ければいいのでは。
クロスブラウザならonclickで時刻を取得し、前回クリック
との差で判別とかちょっとめんどそう。
87 :
84 :04/06/26 23:54 ID:???
<img src="test.jpg" onClick="open1('a.html')" onDblClick="open2('b.html')"> こんな感じにやってみましたがダメでした、ダブルクリックしてもa.htmlの方が出てしまいます…
>>86-87 ondblclickはMozでもOperaでも使える。一応HTML4で標準化されてるしね。
ただ、IEを含めどのブラウザもonclickと併用すると
ダブルクリックの1回目のクリック時にonclickが発生するので
onclickではその後ondblclickが発生しないことを判定する必要がある。
Moz,Operaでは2回目のクリック時にもonclickが発生し、それからondblclickが発生するので
event.detailを使ってonclickからダブルクリックを検出する方がいいかもね。
>>86-87 クロスブラウザ版を作ってみたが。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var tid, time = 0, delta = 500
function test() {
var t = new Date().getTime();
if(time == 0 || t - time > delta) {
time = t; tid = setTimeout(link1, delta+50);
} else {
if(tid > 0) clearTimeout(tid); time = 0; link2();
}
}
function link1() { window.open('
http://www.yahoo.com '); tid = 0; }
function link2() { window.open('
http://www.amazon.com '); }
</script>
</head><body>
<p><img src="t0.png" onclick="test()"></p>
</body></html>
>>88 そうか〜ondblclickってHTML標準だったのか、きちんと見て
なかった。でもこれを使っても結構面倒なんで、結局は時間
見て判別するのが簡単のような気がしている。
俺ならonclickで変数に値1を代入&タイマーに変数を参照するウィンドウ開く関数を登録 ondblclickで変数を値2に上書き って実装するかな。タイマーは0.5秒ほどかね
>>89 IEはダブルクリックの2回目ではclickイベントが発生しない(Win2000/IE6で確認)。
OS側のダブルクリックの反応時間設定がそれほど短くない場合
通常のダブルクリックでは期待する動作にならないだろう。
(反応時間 > deltaならば「ダブルクリックもどき」自体が不可能になりかねない)
っていうかシングルとダブルで動作を分ける必要がないだろ。 なんの為にそんなことするんだ?
どんな場合も必要なかったらそんなもの標準化されたりしないと思うが。
まぁ遊んでるだけだろう
97 :
Name_Not_Found :04/06/27 03:34 ID:vq7GoMK7
聞きたいのだがこのスクリプトがどういう動作をするのか詳しく聞きたい
<!-- VC active -->
<SCRIPT LANGUAGE="JavaScript">
<!--
// ValueParameters
ValueHost = "hs0068897";
ValueLoaded = false;
ValueID = "pagebuster";
ValueVersion = "1.1";
ValueBannerType = "pop";
ValuePopSize = "medium";
//-->
</SCRIPT>
<SCRIPT LANGUAGE="Javascript" SRC="
http://oz.valueclick.ne.jp/jsmaster "></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
if (ValueLoaded) ValueShowAd();
//-->
</SCRIPT>
<!-- vc active -->
>>97 まずそのリンク(スクリプト本体)を右クリックから保存してメモ帳とかで見たと仮定すると・・・
その本体でクエリを一つずつ組み立ててる。
ユーザIDからUA、広告のサイズ、表示方法、どの広告にするか・・・etc.
つまり想像できそうなことしかやってない。(はず)
99 :
:04/06/27 06:16 ID:???
javascriptを始めたばっかりの初心者なんですが、よく見かける、ブラウザ上でイラストや写真等のオブジェクトがブラウザ上を動き回るようなスクリプトってどー書けばいいんでしょうか??
>>99 まず写真やイラストのオブジェクトを適当に配置し
自由に座標を設定するといい。
でもマウスを追いかけるのは不評なのでやめよう。
>>99 動きを持たせるなら時間で位置を書き換える
なるべく幾何学的な動きの方が楽だ
102 :
Name_Not_Found :04/06/27 07:12 ID:vq7GoMK7
97はつまり広告をクリックしているということでいいのか? つーかそれはコメントになっている感じだがそれでも動作するのか? もし不正だったら通報しなきゃならん
ウインドウ内にD&Dされたファイルのパスを取得するってのは可能でしょうか?
無理です
105 :
99 :04/06/27 16:18 ID:???
>>100 オブジェクト自体に座標を設定するやり方ってのが分からないんですよ。
どう記述すればいいのでしょうか?
あと、それには<DIV></DIV>やレイヤーでくくらないとダメなんでしょうか?
>>101 時間で位置を変えるってのは、時間ごとに関数を再び呼び出して実行させるってことですか??
window.setTimeout(script, msec) ←この関数しか思い浮かばないのですが。
106 :
103 :04/06/27 17:25 ID:kwaizhig
>>102 表示だけ。
外部ファイル側はvalueclickのサーバー上にあるし自動クリックみたいなスクリプトが入ってるわけないじゃん(w
>>105 過去スレ群を読めば100回くらいはサンプルが貼られて
いるんじゃないですかね。それを見る気がないなら我々も
教える気にならんよ。
>>106 その前にブラウザにファイルをD&Dしたらどんな動作するかやってみた?
D&Dじゃないならformのinput type="file"で選択はできる
けど恐らくセキュリティ関係でスクリプトからは読めないかも
110 :
Name_Not_Found :04/06/28 18:17 ID:GInDAIra
document.open()をすると、ブラウザの履歴が一つ進んでしまいます。 これを進まないようにする方法はありますか?
>>110 サブに書き出す又はinnerHTMLを使いメインを書き換える
サブって何ですか?メインって何ですか?
document.open()なんか使ったことねぇ
>>112 window
>>113 ページをいくつかに分けて書き換えるときに使わない?
つかページ書き換えるときってみんな何使ってるの?
115 :
62 :04/06/28 22:44 ID:???
レス遅くなりすぎでスマン。 jsはサーバーサイドのプログラムと役割分担をすれば、主にユーザーインターフェース、デザインを受け持つと思うので、 document.writeなどで構造自体を書き出すのはあまり賛成できない。 私はWebを使う場合、情報収集が多いので、デザインはどうでもよく、多くの場合jsを切っている。切っていて見れないページを 作ることはない。またjsは好きではあるが、Webにjsは必須であるかということについては疑問を持っている。 デザインを重視する人は、それを必要としない人がいることも認識して欲しいな〜と思う。
>>114 > ページをいくつかに分けて書き換えるときに使わない?
> つかページ書き換えるときってみんな何使ってるの?
createElement と createTextNode で書き換える内容をこさえて、
removeChild で消す部分をDOMツリーから取り外し、
appendChild で生成したモノをツリーにぶら下げる、
という方法。
118 :
Name_Not_Found :04/06/28 23:36 ID:05tfWPpd
「階和」というものを「n?=n+(n-1)+…+2+1」と勝手に定義し、 それを計算するプログラムを ↓の階乗を計算するプログラムを応用して作る …という課題が出たのですが、 初心者のため、どのようにして書いたらよいのか全く分かりません。 時間があれば、一からじっくりと勉強したいのですが、 締め切りが迫っているため、とりあえず模範解答だけでも 教えて頂きたいと思い書き込みました。 どうかご親切な方、お力を貸して下さい。
<html> <head> <title>簡単階乗計算機</title> <script Language="JavaScript"> <!-- function fact(n){ if(n==0){ return 1; }else{ return n*fact(n-1); } } function write_fact(){ n=document.frm1.number.value; document.frm1.factrial.value=fact(n); } //--> </script> </head> <body> <h2>数字を入れてクリック</h2> <form name=frm1> <input type="text"name="number"size="3"> !=<input type="text"name="factrial"size="16"> <p> <input type="button"value="計算"onClick=write_fact()> </p> </form> </body> </html>
掲示板にて静的HTMLを吐き出すタイプを作成したのですが 名前とメールのクッキーを呼び出す際にHTMLをXHTML1.1で記述してる為、 form要素にname属性が振れず、四苦八苦しております。 classはboardと振っているのですが、このクラス名でアクセス(?)する方法がわかりません。 document.forms.board.elements['name'].value = getCookie("Cookname"); やら document.forms['board'].elements['name'].value 等、色々試しましたが どれも代入してくれませんでした。 IDを振ろうにもページ内に表示されてる各トピック毎にフォームが存在する為に振れず...。 よければクラスでアクセス(?)する方法を教えてもらえないでしょうか。
>>120 ID属性つけてdocument.getElementById("id");
>>120 クラス名だけでアクセスする方法はないのでちょっと遠回りだけど、
var target;
var tmp = document.getElementsByTagName("input");
for(var i=0 ; i<tmp.length ; i++){
if(tmp[i].className.indexOf("Cookname") != -1){
target = tmp[i];
}
}
123 :
122 :04/06/29 00:17 ID:???
で、アクセスはできます。 途中でsubmitしてしまったスマソ
124 :
120 :04/06/29 00:48 ID:???
>>121 いや、IDはごにょごにょ…。
>>122 どうも、ありがとう。
しかし、こちらの説明不足だったようで(´・ω・`)
紹介してくれたのはinput要素のクラス名がCooknameの場合と思いますが、そうではなくて…。
HTMLソース晒します。
<form method="post" action="./bbs.cgi" class="board">
<fieldset>
<legend>新規投稿フォーム</legend>
<dl>
<dt><label for="name">名前</label></dt>
<dd><input type="text" name="name" id="name" value="" /></dd>
<dt><label for="mail">メール</label></dt>
<dd><input type="text" name="mail" id="mail" value="" /></dd>
<dt><label for="title">タイトル</label></dt>
<dd><input type="text" name="title" id="title" value="" /></dd>
<dt><label for="message">内容</label></dt>
<dd><textarea name="message" id="message" cols="40" rows="3"></textarea></dd>
</dl>
<p><input type="submit" value="書込" /></p>
</fieldset>
</form>
このソースのinput要素のname属性がnameのとこにCooknameを、
mailのとこにCookmailをgetCookieサブルーチンを通した値をvalueに与えたいのです。
説明不足すみませんでした。
> いや、IDはごにょごにょ…。 なんだそれは
>>124 アホですか?
cookieを読んでvalueに入れればいいだけだろ
まぁ、マターリいこうぜ!
>>118-119 自然数以外が入力された時に無限ループやエラーが
起こらないようにしておいたよ〜
function fact(n){
return (n=Math.abs(parseInt(n)))!=n?n:n?n+fact(n-1):0;
}
function write_fact(){
with(document.frm1)factrial.value=fact(number.value)||"not a natural number!";
}
129 :
118 :04/06/29 08:16 ID:???
>>128 助かりました!
どうもありがとうございます。
130 :
122 :04/06/29 12:18 ID:???
>>124 getElementsByName なんてのも遭った飢餓。
>>130 あったあった。
getElementByName とか書いちゃって
「動かねーよボケ」ってディスプレイをビンタしたことあるなぁ
132 :
Name_Not_Found :04/06/29 17:07 ID:PrcECRN5
http://hp.xrea.jp/m/link/37.html 上記ページのようなtree型メニューを作りたいのですが
NN4に対応して、
さらに
treeを複数使用し
展開するtreeは必ずひとつにしたい
(他のtreeを展開しようとすると、現在展開しているtreeは自動的に閉じる)
のですが、
使用、または、技術的に可能なものでしょうか。
もし可能でしたら、スクリプトを教えていただけないでしょうか。
よろしくお願いします。
>>132 可能。
サンプルソースはいくらでも転がってるからあとはgoogleで
134 :
120 :04/06/29 22:42 ID:???
なんとか出来ました。
>>122 さんのが大きなヒントになってくれました。
秀和システムの参考書の「HTMLを配列として扱う」という所を読んでピンときたです。
function writeCookie () {
var tmp = document.getElementsByTagName("form");
for(var i=0 ; i<tmp.length ; i++){
document.forms[i].name.value = getCookie("Cookname");
document.forms[i].mail.value = getCookie("Cookmail");
}
}
以上のようにルーチン化してonLoad属性にて読み込むことで
全てのフォームに反映されそうです。
色々とありがとうございました。
135 :
122 :04/06/29 23:22 ID:???
document.forms[i] は tmp[i] だね。 せっかく変数(つか、配列)にほりこんだんだから、それ使った方が メモリにやさしいかも。 あと name="name" はよくない気がする。
ところでXHTML1.1はDOM HTMLでアクセスできるのか……?
137 :
120 :04/06/29 23:40 ID:???
>>135 あ、なるほど。
document.tmp[i]とか書いてましたorz
動かないわけですね。精進します。
nameの値…、これはJS的によろしくないのですね。
authorに変更しておきます。何度もありがとうございます。
>>137 変数名とか、予約語に触れないようにしたいけど、全部覚えるのは無理、
って場合は、例えば name じゃなくて user_name とか u_name とか、
二単語ぐらい繋げるのが手っ取り早いかも。
140 :
136 :04/06/30 03:11 ID:???
>>139 DOM 2 HTMLの "only for [HTML 4.01] and [XHTML 1.0]
documents" は気にしなくて良いの?
1.0との互換部分は問題ないんじゃ? 多分実装上1.1はDOMは全然使えませんなんて糞なことはないかと・・・
>>140 動く実装があるかも知れないが、その動作は保証されない、ということ。
確かにDOM2HTMLはXHTML1.1/XHTMLMOD以降のXHTML
(名前空間が
http://www.w3.org/1999/xhtmlであるだけのスキーマ不明のXHTMLや 他のXML中に埋め込まれたXHTMLを含む)における動作を保証するものではない。
でもまあ大半のXHTML文書がそうであるようにtext/htmlで認識させてあれば
実装の裁量でHTML4とみなされDOM2HTML通りに(HTML4として)動作する可能性が高いだろう。
# 勿論保証された動作ではない。
フォームのtextfieldで既定文字数以上を入力できない ようにする方法を教えてください。 今までは既定文字数、行数を入力すると 既定数以上は反映されないようにしていました。
145 :
Name_Not_Found :04/06/30 21:00 ID:qy8HWVhR
質問です 何度も同じ文字やタグを記述するときに、あらかじめその文を<head>内で短い文字に指定しておいて、 <body>内で、その指定した短い文字をdocument.writeか何かを使ってみやすく記述することはできるんでしょうか? 例えば、何度も <font color="red">●</font> や、 <font color="blue">●</font> <font color="lime">●</font> <font color="black">●</font> などの何種類もの文をたくさん不規則に記述するとき、作業的にもめんどくあとでみるとわかりづらいし混乱しやすいので 簡潔にわかりやすくすることはJavaScriptにおいて可能かどうか知りたいです また、他によい方法(JavaScript以外でも)を知ってる方いましたらお願いします なお、現在PCではないため上記の記述例は確認がとれないです
>>145 たぶん可能。
「たくさん」とか「不規則」とかちょっと抽象的で何がしたいのかいまいちワカンナイ。
その例のパターンが多いなら要所要所で
<script language=javascript><!--
f("red", "●", 5);
// --></script>
色, 本文, 繰り返し回数
みたいに呼び出せる関数作ったらいいんじゃない?
その出現順序が全く不規則なら
配列に("red","red","blue","lime","black","black")みたいに省略して
あとから<font color="">●</font>を付け足して組み立てるとか。
XHTML1.1はもはやHTMLではない。Content-Type: application/xhtml+xmlで、 XMLとして解釈させるべきもの。 XHTML1.0はtext/htmlを使ってHTMLとして解釈させてもよい。
>>146 そう言う事は、htmlやらcssで工夫すれ。
その程度のパターンなら、いちいちscriptタグ
書く方がめんどい。
150 :
136 :04/06/30 23:36 ID:???
>>142 ,147
d
将来的にはCoreでやりくりしたほうが確実そうってことだね。
>>150 Coreでどうにもならないのがdocument.cookieとdocument.referrer...。
strict厨は居場所に戻った方が良いんじゃね?
ああごめんね。邪魔したな。
154 :
145 :04/07/01 03:07 ID:???
何がやりたいか、だけど
落ちゲーの「ぷよぷよ」ってわかるかな・・、
>>145 で出した例ではそのぷよぷよの画面を模式的に表した図を書く例です
つまり、画像を用いずに文字で書くわけなのでひたすら
<font color="red">●</font><font color="blue">●●</font><font color="lime">●</font><font color="red">●</font><font color="yellow">●</font><br>
<font color="blue">●</font><font color="lime">●●</font><font color="blue">●</font><font color="yellow">●●</font><br>
・・・・
みたいに書かないといけないので手間がかかりみづらく、完成図が浮かびにくいので、いい方法がないか悩んでる次第です
そうでもないよ。
>>154 俺は元ばよツアマスターですよ。 いや、マジで。
色を使わなくてもこんなんで解らないかなぁ・・。
■
○ ○■
× ○■
×○
× ○■
×■×○■×
×■×○■×
○○■×○■
○■×○■×
でもこーやって文字で描こうとすると環境によってズレるんで
おとなしく画像使ったほうがいいと思うよ。
万能tableレイアウターの俺が来たよ
onMouseOver="〜" などで event.srcElement で得られたエレメントの 要素リスト番号?を調べる方法はありますでしょうか。 予め全ての <TD> に ユニークID を割り当てておけば var str = event.srcElement.id; とかでOKですが 元々作られている表で .getElementsByTagName("TD")[str-n] という感じで使用したり、 そのカラムの別の要素にアクセスしたりしたいと思いまして ご教示おねがいします
>>158 var tmp = document.getElementsByTagName("td") でドキュメント内の
td が全部詰め合わせになった配列が手にはいるので、
もちろん、その親要素で限定しても全然構わないけど、
for(var i=0 ; i<tmp.length ; i++){
if(tmp[i] == event.srcElement で得られたエレメント){
ごにょごにょ
}
}
とすれば、どの td か、っていうのはわかります。
160 :
158 :04/07/01 13:49 ID:???
dakara DOM tsukae tte
750 名前:Name_Not_Found[sage] 投稿日:04/06/14(月) 14:09 ID:??? HTMLとCSSが理解できていない人には(DOMを操作することは)難しい
<td width=\"100%\"> 何処かがおかしい・・・?
>>163 td 要素に指定されている width は推奨されない属性です。
なんだ・・ 9連鎖書いたのにレスまだなのか・・・ 暇なんで108連鎖書いてもいいですか?
>>165 ホレ。ぷよのアルゴリズムは自分でやるように。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title><script type="text/javascript">
var a, cr, cc, rows = 6, cols = 6;
function init() { a = document.getElementById('t0').rows; start(); }
function start() {
var c = Math.floor(rows*Math.random());
if(a[0].cells[c].firstChild.nodeValue == '_') {
a[0].cells[c].firstChild.nodeValue = '○'; cr = 0; cc = c;
setTimeout(step, 500);
} else setTimeout(start, 500); }
function step() {
if(cr < rows-1 && a[cr+1].cells[cc].firstChild.nodeValue == '_') {
a[cr].cells[cc].firstChild.nodeValue = '_';
a[cr+1].cells[cc].firstChild.nodeValue = '○'; ++cr;setTimeout(step, 500);
} else setTimeout(start, 500); }
</script></head><body onload="init()">
<table summary="test"><tbody id="t0">
<tr><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th></tr>
<tr><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th></tr>
<tr><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th></tr>
<tr><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th></tr>
<tr><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th></tr>
<tr><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th><th>_</th></tr>
</tbody></table></body></html>
168 :
Name_Not_Found :04/07/02 00:51 ID:MsjyYkfn
window.location.href に関する質問です。 Aというページをbとcにフレーム分割した場合 bのリンクをcフレームに表示させようとすれば、 parent.c.location.href = URL ですが AをBとCに分割し、更にCをdとeに分割した場合に Bのリンクからdフレームへ表示をさせるには、どのように指示すれば良いのでしょうか? 環境はIE5 (Win2k)です。 よろしければご回答お願いします。
169 :
165 :04/07/02 02:21 ID:???
>>166 なんだか解らんけどすげーな、サンクス。
4つで消えるようにするには縦横の繋がりを調べていかないといけないよな、
結構大変そうだ・・。 暇なんで挑戦してみるわ。
>>167 このスレに挟み込みが解る奴がいるとは思わなんだ。
>>168 俺恥ずかしいことにフレームに関しては何も知らないんだけど
B→Cの場合には
parent.c.location.href = URL
つまりBから出発してB→A(parent)→CでOKなわけだ
じゃあB→C→Dの場合は
B→A→C→Dでいいのでは?と俺なら考えるけどな
ホントにフレームの扱いに関しては何も知りません
171 :
145 :04/07/02 06:22 ID:???
>>156 >>165 レス遅くなってすみません
画像はPCないため使えないです
あとぷよぷよは例なので実際は違うもので、対戦ぱずるだまというやつです
ぷよのほうがわかりやすいので例にしてみました
それにしてもマスターがこんなとこにいるなんて驚きです
ぷよのアルゴリズムはどっかに研究してるスレがあったような・・
レスくださった方ありがとうございました
あきらめて普通に書きます。。
>>168 parent.frames.C.frames.D.location.href = URL;
>>170 知らないと言い訳しながら役に立たない発言をするのは
やめませう。
>>171 結局どういうものを求めているのか分からない。見せ方は
>>166 のようなコードで、あとは並べたり消したりするアルゴリズム
をちゃんとすれば済むんじゃないの?アルゴリズムは当然自分で
やるよね、JavaScriptだからどうだという話題じゃないし。
173 :
Name_Not_Found :04/07/02 10:53 ID:E9eQFPTJ
質問させてください。 ページ上部にボタン横が並んでいてそのボタン一つ一つに Javaスクリプトでポップアップメニュー下方向に表示させる設定をしています。 しかし、ボタンの下部分はiframeで別ページを表示させており、 ポップアップとかぶってしまうんです。かぶっている部分にカーソルをもっていくと、 iframe部分がアクティブになってしまい、ポップアップが消えてしまいます。 ポップアップを消えないようにしたいのですが、良い知恵はありませんか?? ご教授して頂けたら幸いです。 よろしくお願いします。
す、すいません(^▽^;) あげちゃいました・・・
>>173 iframe使わない。
iframeにかぶらないポップアップにする。
iframe部分をアクティブにしない。
176 :
170 :04/07/02 14:56 ID:???
>>172 ん?そのコード俺の予想通りじゃん
自分なりに予測して調べてみればって伝えたかったんだけど、遠まわしな表現が気に入らなかったのか
177 :
Name_Not_Found :04/07/02 15:39 ID:HN5nS+m0
質問なんですが、ブラウザ上で、携帯のように 入力の段階で(送信した後で正規表現などで判定したりではなく) テキストボックスに半角数字しか入力できないようにしたりする事は できますか?もし、実現可能なら教えてください。お願いします。
179 :
Name_Not_Found :04/07/02 15:49 ID:HN5nS+m0
返事ありがとうございます。
>>177-178 ん?こういう奴のことじゃないのかな?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function ck(i) {
if(i.value.match(/[^a-zA-Z0-9]/)) alert('!!!');
}
</script>
</head><body>
<form action="#" name="f0"><p>
<input type="text" name="t0" onchange="ck(this)">
<input type="submit"></p></form>
</body></html>
>>176 そんな誰でも分かるような予想を偉そうに(しかも言い訳つきで)語る時点で(ry
182 :
156 :04/07/02 16:45 ID:???
>>171 スマン、なんか思いっきり質問の意味を間違えて受け取ってた・・。
こういう意味だったのか。 ↓
<script type="text/javascript">
<!--
r = '<font color="red">●</font>';
b = '<font color="blue">●</font>';
l = '<font color="lime">●</font>';
k = '<font color="black">●</font>';
document.write(b+"<BR>")
document.write(r+"<BR>");
document.write(" "+k+l+r+b+"<BR>");
document.write(r+b+k+l+r+b+"<BR>");
document.write(r+b+k+l+r+b+"<BR>");
document.write(r+b+k+l+r+b+"<BR>");
// -->
</script>
誰でも分かるなら質問されないと思うが
>>176 >そのコード俺の予想通りじゃん
全然違うだろうが
185 :
156 :04/07/02 16:59 ID:???
>>171 もっと書きやすくしてみた。
<script type="text/javascript">
<!--
r = '<font color="red">●</font>';
b = '<font color="blue">●</font>';
l = '<font color="lime">●</font>';
k = '<font color="black">●</font>';
n = " ";
retu = new Array(6);
retu[5] = b;
retu[4] = r;
retu[3] = n+k+l+r+b;
retu[2] = r+b+k+l+r+b;
retu[1] = r+b+k+l+r+b;
retu[0] = r+b+k+l+r+b;
for (i = 0; i < retu.length; i++){
document.write(retu[retu.length-i-1]+"<BR>");
}
// -->
</script>
これにretu[6]とかをどんどん付け足していくだけ。
nはスペース(空のマス)ね。
186 :
156 :04/07/02 17:02 ID:???
>>171 あ、その時は retu = new Array(6); の6も書き換えてね。(^^;A
retu[〜] の 〜 + 1 の数値ね。
187 :
156 :04/07/02 17:36 ID:???
>>171 む・・ 最初から retu = new Array(20); とかにしておけば良いかも。
188 :
156 :04/07/02 17:40 ID:???
>>171 そのままじゃ問題あるので書き直し。 何度もスマソ
<script type="text/javascript">
<!--
r = '<font color="red">●</font>';
b = '<font color="blue">●</font>';
l = '<font color="lime">●</font>';
k = '<font color="black">●</font>';
n = " ";
retu = new Array(30);
retu[5] = b;
retu[4] = r;
retu[3] = n+k+l+r+b;
retu[2] = r+b+k+l+r+b;
retu[1] = r+b+k+l+r+b;
retu[0] = r+b+k+l+r+b;
for (i = 0; i < retu.length; i++){
if ( retu[retu.length-i-1] != undefined ){
document.write(retu[retu.length-i-1]+"<BR>");
}
}
// -->
</script>
189 :
168 :04/07/02 18:29 ID:???
>>170 さん
>>172 さん 回答ありがとうございます。解決しました。
170さんの言われているような parent.C.D.location = というようなアプローチは既に試してはいたのですが
〜.frames.C.〜のようなやり方があるとは知りませんでした。
(検索してそれらしいものはありましたが、どこの解説でも"〜.frames[フレーム名].〜"となっていたので)
大変助かりました、ありがとうございます。
>>188 わざわざデフォルトの長さを決めておく必要もないのでは。
長さなんてどうせ可変だし。まあそういう主義ならいいけど。
最後のfor文は漏れだったら配列を予め逆順にしておいて
document.write(retu.join('<br>'))で済ましちゃうなぁ...。
>>189 それは
>>11 のQ7と類似の問題(つまりどっちでも実質同じこと)。
そしてC.D.とか書くよりframesをちゃんと書いた方がトラブルが少ない。
192 :
156 :04/07/02 19:01 ID:???
>>190 そっか、30なんて指定する必要無かったのか…_| ̄|○
ご指摘サンクス子。
配列の順番が逆なのは落ち物パズルの場合、下段のほうから
書いていけたほうが修正するときに便利だからデス。
>>171 完成品っす。
<script type="text/javascript">
<!--
r = '<font color="red">●</font>';
b = '<font color="blue">●</font>';
l = '<font color="lime">●</font>';
k = '<font color="black">●</font>';
n = " ";
retu = new Array();
retu[5] = b;
retu[4] = r;
retu[3] = n+k+l+r+b;
retu[2] = r+b+k+l+r+b;
retu[1] = r+b+k+l+r+b;
retu[0] = r+b+k+l+r+b;
for (i = 0; i < retu.length; i++){
document.write(retu[retu.length-i-1]+"<BR>");
}
// -->
</script>
ページを読み込んだ時に〜〜〜をする、というのはどうやったら出来ますか?
onload
font タグ とか document.write とかマジキモイから。
>>193 window.onload = function(){
//ここにやりたい処理。
}
>>195 キモイね。真っ白になっちゃえばいいのにね。
197 :
Name_Not_Found :04/07/02 22:05 ID:k2h0d5Z5
ちょっと質問です、答えていただけるとありがたいです <body onload="myFunc()"> <SCRIPT language="JavaScript"><!-- myMsg = "ここに表示させたい文字列 myCnt = 0; myOP = window.opera; // OP myN6 = document.getElementById; // N6 myIE = document.all; // IE myN4 = document.layers; // N4 if (myOP) myBR="O6"; // ブラウザは OP6以上 else if (myIE) myBR="I4"; // ブラウザは IE4以上 else if (myN6) myBR="N6"; // ブラウザは NS6以上 else if (myN4) myBR="N4"; // ブラウザは NN4 else myBR=""; // ブラウザは 分からん function myFunc(){ myMess = myMsg.substring( 0 , myCnt )+"_"; myCnt = ( myCnt == myMsg.length ) ? 0 : myCnt+1; if (myBR == "I4"){ // IE4の時の表示ルーチン document.all("myIDstr").innerText = myMess; }else if (myBR == "N4") { // NN4の時の表示ルーチン document.layers["myIDstr"].document.open(); document.layers["myIDstr"].document.write("<div>"); document.layers["myIDstr"].document.write(myMess); document.layers["myIDstr"].document.write("</div>"); document.layers["myIDstr"].document.close(); }else if (myBR == "N6") { // NS6の時の表示 document.getElementById("myIDstr").innerHTML=myMess; } setTimeout( "myFunc()" , 200 ); // ぐるぐる回る/スピード } // --></SCRIPT>
198 :
Name_Not_Found :04/07/02 22:07 ID:k2h0d5Z5
上記のスクリプトは 某所で公開されていた文字のタイピング表示スクリプトなのですが、 これだと文字を表示し終わると文字が消えて 最初から表示されるというループのようになってしまうんです これをループさせずに、一度表示したらそのままって感じにするにはどうしたらいいのでしょうか・・・ 唐突ですいませんが、よろしくお願いします
>>198 //myCnt = ( myCnt == myMsg.length ) ? 0 : myCnt+1;
上を消して下に書き換える。
if( myMsg.length < myCnt ) return;
else myCnt++;
こんなコードを人様に公開するなんてマジで終わってんな。
200 :
Name_Not_Found :04/07/03 00:41 ID:i2NFvVMt
置き換えたところできました! 助かりました〜^^; サンクスです!
//<img name="foo"> function f(){ document.foo.src = xxx(); setTimeout("f()",60000); } f(); こんな感じで画像の自動更新はできるのですが、 テキストの自動更新ができません。 どうしたらいいですか?
>>201 "要素.innerHTML" に代入が簡単。
203 :
Name_Not_Found :04/07/03 01:15 ID:i2NFvVMt
NO,197 198で質問した者です myMsg = "ここに表示させたい文字列" の文字列の改行方法がいまいちよくわからないのです myMsg[0] = "ここに表示させたい文字列" myMsg[1] = "ここに表示させたい文字列" ってな感じで行数を増やすと、ブラウザが対応してません となって表示されなくなってしまうし・・・ ご指導していただけるとありがたいです
なによ、その変な@マークは。ふざけてるの?
なんだと
だんなと?
208 :
204 :04/07/03 01:50 ID:???
@の意味を知らない人はすっこんでてね。
なんかわいた
210 :
204 :04/07/03 02:07 ID:???
javascriptのDOMを勉強したいんだけどさー、解りやすい解説+サンプルが載ってる ページがあったら紹介しなよー、悪いこと言わないからさー。 あー
@ どういう意味か教えてください。よろしくお願いします。 ご指導していただけるとありがたいです
>>213 悪いこと言わないからさー。 あー きらめたほうがいいね。
>>216 やだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだやだ
>>203 HTMLって改行は<br>でしょ。だから文字列の中に<br>を
埋めておけばいいのん。
文字列の中で<BR>を叫んだ着物
222 :
Name_Not_Found :04/07/03 10:40 ID:i2NFvVMt
>>220 この場合、文字中に<BR>を入れると
表示させたとき<BR>が改行ではなく、そのまま文字として認識され
たとえば
今日もいい天気ですね<BR>どこか買い物にでも行こうかな
とやると、そのまんま表示されてしまうのです
>>222 改めてレスをたどってやったが、元は
>>197 だな?
ならば、innerText使ってるから無理。
innerHTMLに汁。
っつか、
>>197 の意味判ってる?
224 :
Name_Not_Found :04/07/03 12:09 ID:TQXVduHO
"\n"
<pre>あ\nほ</pre>
\r
strict厨混じるとキモイ流れになる証拠だな
>>228 は?
ただヴァカがヴァカに答えてあげてるだけだろ。
どんたこすったらどんたこすっ♪
悪いけどココ教えて君と知ったか厨しかいないスレだから そこんとこ理解して発言んするように
http://www.nvidia.com/page/home のメニューみたいに、マウスを乗せると下にメニューが表示されるようにしたいのですが
それらしい、JavaScriptをコピーして実行させても左下にエラーが表示されて
実行されません。多分、JavaScriptが間違ってるのかと思います。
何方か教えてください。
夜釣りの時期か
>>233 そういうの配ってて、使い方くらい書いてあるサイトたくさんあるから探せYo!
236 :
Name_Not_Found :04/07/04 14:31 ID:fGhkVJkQ
すいません>236ですが、間違えました。 referrerの二番目の#7と四番目の#q07はどっちも同じです。
window.location → location.href 自分も初心者だから後は上級者に聞いてくれ。
>>235 自分なりに探してみましたが見つかりませんでした。
マウスポインタを乗せるとリンク先のページの説明が表示されるのは
見つかりましたが、少し開き方が違ってました。
ご存知なら教えてくれませんか?
教えてクンのすくつにようそこ
低脳が集まる糞スレと聞きましたがここですか?(ゲラゲラ
244 :
238 :04/07/04 16:23 ID:???
すみません自己解決しました… 240さんのお言葉でもう一度確認してみたら、<body onLoad="preloadImages();"> が残ってて、その画像を消してしまったためでした。 お騒がせしてすみません。
氏ね。
あ、240さんありがとうございました。言い忘れてごめんなさい。 逝ってきます
>>246 >index.htmlのhead内に、特定のページAから来たら特定のページBにすっとばすJSを、
>body内に、アクセス解析レンタルのJSを入れています。
句読点の使い方が変。
最近の教えてクンは日本語も出来ないのか…
糞レスがループする糞スレと聞きましたがここですか?(ゲラゲラ
本当に難しく質問する価値のある質問だと結構役に立つ んだけど、そういう質問はあまり多くないからね。 嘘だと思ったら過去ログが十数本読めるから読んでみれ。
メンドクサイから有用な質問・回答抜き出してまとめサイト作ろうか?w
ほーカス住人のためのまとめサイトですか? タイトルもこれでいいぞ。さぁ作れ(プゲラ
なんでプゲラなのか分からない
>>251 本当にメンドクサイ作業がそれだと思うけど、やる気あるなら応援するぞ。
質問です。 とあるPHPで吐くHTMLなんですが。 フォームのエレメントタグで以下のように出てきます。 <input type="text" name="code[id]"> これに値を参照/代入したいのですが、 document.form1.code[id].value document.form1.code["id"].value document.form1.code.id.value 等は未定義エラーが発生します。 document.form1.elements[0].vlaue なら可能ですが、フォーム内容に修正を加えたとき番号がずれる可能性が ありますので、できる事なら避けたいです。 何か良い方法はありますでしょうか?
>>255 何か根本的に間違っているんじゃないの。PHPで生成してる
わけだから、「name="code1"」とか「name="code2"」とか
連番を振るようにして、あとは
>>11 のQ7/A7を使うのが
いいと思うけど。
257 :
255 :04/07/05 15:09 ID:???
>>256 PEARのQuickFormでエレメントをグループ指定すると、
name="group1[element1]" といった感じで吐くんですわ。
>>257 それはHTMLとして正しくないんで、ふつーPHP側でそれ以外の
方法があるんじゃないの。JavaScriptの話題じゃないね、バイバイ。
259 :
255 :04/07/05 16:27 ID:???
>>258 正しくないっていわれたー。
なにを根拠に...
そして、自己解決しました。
document.form1.elements['code[id]'].value
で参照、設定が可能でした。
name 属性使うのってどうなの?
>>259 動くとしてもそもそもヘンだと思わないか? 配列にするために
「code[id]」という書き方をしたんだろ。ところがその「code[id]」
というのが名前になっちゃって配列の添字は別に指定するってのは…
まあ動きゃなんでもイイっていうわけなのかも知れないけど、それ
続けてくとコードがボロボロになって手に負えなくなると思うぞ…
>>263 どこにだって表示させればいいんじゃないの?何が問題なわけ?
ある程度は自力でやらないと回答も得られないと思うけどな。
265 :
255 :04/07/05 17:01 ID:???
>>261 なるほど、了解した。スマソ
>>262 いや、俺も最初はゲゲっておもった。
>>257 で挙げたクラスライブラリをつかうとそういうHTMLを吐くんだわさ。
>>264 普通のテキストリンク
┃開いたリンク1 ┃
┃開いたリンク2 ┃
┃開いたリンク3 ┃
┃開いたリンク4 ┃
┃開いたリンク5 ┃
┗━━━━━━┛
普通のテキストリンク
┃開いたリンク1 ┃
┃開いたリンク2 ┃
┃開いたリンク3 ┃
┃開いたリンク3 ┃
┃開いたリンク4 ┃
┃開いたリンク5 ┃
┗━━━━━━┛
こんな感じに表示させたい位置がずれてるのです。
こういうのには対応できないのですか・・・?
>>266 うーん、そのソースぐっちゃぐっちゃで全部読み切ったわけじゃ
ないけど、HTMLからメニュー構成の情報を取得して全部もっかい
document.write()で書き直してるような気がする。だとすれば
そういう配置には「対応していない」んじゃないかな〜。
もっと普通の(document.write()で書き直したりしない階層メニュー
のサンプルを探した方がいくない?
268 :
Name_Not_Found :04/07/05 17:45 ID:CYrulQJz
hoge.html内で window.open('test.cgi'); をやって、test.cgiにファイルを作成させています。 窓を開かずに、test.cgiだけ実行させるにはどうすればいいでしょうか。
>>268 思いつきなんだけど、
var tmp = document.createElement("img");
tmp.src = "test.cgi";
とかしてみると、アクセスしてくれんかね。駄目だったら、
cgi に 何か image/gif とかを返してもらうようにして、
document.getElementsByTagName("body")[0].appnedChild(tmp);
としてみるとか。
>>261 既出だが、標準を尊重したいならお前こそ仕様書読み直すことだな。
お前の引用した部分は、inputのname属性のようなCDATA型の属性には関係がない。
name="code[id]" は (X)HTML 的には何も問題がない。
>>271 スマン、漏れは
>>261 じゃないんだけど、後学のために聞かせて
欲しいんですが。
> ID and NAME tokens must begin ...
の下りは、ティムたんの誤爆ってことなの?
属性値ってPCDATAだと思ってた… orz
273 :
272 :04/07/05 20:04 ID:???
×下り ○件
>>271 ふーんそうなのですか、勉強になりまつ。ところで質問なのですが、
その箇所のすぐ上にこうありますよね。
* CDATA is a sequence of characters from the document character
set and may include character entities.
(...中略...)
For some HTML 4 attributes with CDATA attribute values, the
specification imposes further constraints on the set of legal
values for the attribute that may not be expressed by the DTD.
この「DTDではCDATAと書かれているがさらに強い制約があるもの」
とは具体的にはどの要素のどの属性なんでしょう。自分はてっきり
これはすぐ下に続くID、NAME、IDREF、IDREFS、NUMBERについての
言及だと考えてしまっていたのですが。よろしくお願いしまつ。
スレ違い
276 :
255 :04/07/05 21:12 ID:???
なんだなんだ? 別に問題ないのか? 外部ライブラリなんで、急に仕様変更になったりしたらやだなと思ってたんだけど、 とりあえずは安心してられるのかな?
>>272 DTD みると ATTLIST に
ID とか NAME とか NUMBER とか属性の宣言値が書いてあるだろ。
IDトークンとかNAMEトークンてのはそれを指している。
> 属性値ってPCDATAだと思ってた
引用符で囲まれて表記される属性値表記の解釈は確かにPCDATAとして行われる。
ただ、ではそれで例えば "maxlength NUMBER #IMPLIED"
というような宣言を無視できるかというと、そういう話ではないので。
>>273 > この「DTDではCDATAと書かれているがさらに強い制約があるもの」
大雑把に言うとDTDにおける "CDATA" という内容の引数実体参照。
%ContentType; とか、 %URI; とか外部仕様が存在するものを指す。
スレ違いスマソ。
278 :
268 :04/07/06 09:12 ID:???
>>270 こんなやり方があるんですね、その方法でうまく行けました。
ありがとうございます。
>>277 なるほど、了解しますた。
>>276 あと、name="..."が同じ要素を沢山作ったらそれが1つの
配列としてアクセスできるというのはDOMには書かれて
いないように記憶してるのだけど…それも読み違いなら
すまんけど。
Strictスレ行けよバカ
281 :
255 :04/07/06 14:07 ID:???
>>279 えーと、グループ化しても配列化しないオプションがあった。
つか、わざわざ配列化してしまうオプションを有効にしていた。
いろいろすれ違いネタになりお騒がせしてすまんかった。> all
DOMの問題はこのスレでしょ。
283 :
283 :04/07/06 22:30 ID:???
OS:Windows2000 SP4 ブラウザ:IE6SP1 商品の広報用のHTMLがあるんですが、そのHTMLをIEで参照することが出来 なくて困ってます。 Scriptを使わず通常のタグだけなら問題ないんですが、動的HTMLを使うた めHTMLの中に約9000程のdocument.writeを追加したところ、IEで参照する とページを読み込み続けて20分程経っても読み込み完了することが出来な い状態です。document.writeの代わりに直接タグを打ち込むと約40秒程で 読み込みが完了しますのでHTML自体には問題無いと思います。 ネットスケープやOperaでは特に問題なく参照することが出来ました。 IE5.5はIE6ほど重くは無かったんですが、それでもかなり重い状態です。 動的HTMLを生成したいため、実際の運用では直接タグを打ち込むというこ とは出来ません。 対処法、もしくは原因など知っていたら御教授願えないでしょうか?
釣られてみようか。
>>283 > 約9000程のdocument.write
が悪い。何をどうしたらそんなことになってしまうのか。
先に行っておくと、DHTML 技術を使うことには何ら問題はないよ。
write なんてしないで、要素を生成して、DOMツリーに追加すればおk
285 :
283 :04/07/06 23:03 ID:???
>>284 つっこまれるのはわかってましたけど、document.write
の大量配置はやっぱりまずいんですね。
ネスケでは一応見れていたので、何らかの解決策がある
のではと思って質問してみました。
document.writeでやっていくことにはあまり固執する
気は無いんですけど、ネスケとIEではdocument.write
の扱いは違うんでしょうか?
>>285 たいして違わないけど、
document.write というオブジェクト+メソッドの構文を
ひとくくりに echo や print みたいな標準出力の代わりと思っているのは、
大きな勘違い。
JavaScript は DOM ツリーにぶら下がるエレメント群とそのプロパティを
ごにょごにょする為のモノ、本筋は。
NN4 に気を遣っているならば、すでにそのスクリプトは
NN4 とのクロスプラットフォームドスクリプティングの限界を
越えてしまっているモノだと思って違う道を探った方がいいよ。
>>284 9000回のDOMノード追加もやり方次第では相当な処理時間がかかると思うが。
>>285 document.writeを使うにしろDOM操作でいくにしろ
画面の再描画回数を減らす方向でルーチンを改造するのが吉。
9000回分のタグを全部配列に入れておいてjoin()した文字列を一気にdocument.writeとか。
そんなに多数書いてるならほとんどをdocument.writeにしてるのか? いくら動的HTMLと言ってもイノシシ並に前しか見れないんだな
289 :
Name_Not_Found :04/07/06 23:25 ID:WA+fL9sm
言葉をつつしみなさい。
290 :
283 :04/07/06 23:29 ID:???
早速のレスありがとうございます。 商品数が約2000ほどあってHTMLのサイズが10MBまで膨れ 上がってました。document.writeの使用率は30%ぐらい という所です。仕様上の問題があって分散して表示という 事が出来ない状況でこんな事態になってしまいました。 JavaScriptの本来の使用目的に外れて限界を超えていた みたいですね。 もう一度再構築する形で進めて生きたいと思います。 ありがとうございました〜。
>>290 ページは1つであってもobject要素などを使えば他の(分けた)
HTMLを埋め込めるから適宜分割して生成できるよ。9000行の
writeはどう見ても尋常じゃないねえ。実はその9000行のうち
変化するところは一部なんじゃないの?
292 :
283 :04/07/07 00:05 ID:???
商品数・価格によって変動させているんですが、おっしゃる通り変 化するところも一部だし、データベースから数値を引っ張っている わけではないので、あまり意味が無いといえばその通りなんですよね。 本来はJavaSevletで…ということなんですが一品物だったのでこの ような事態になりました。 JavaScriptは予想以上に奥が深いようで勉強になりました。
>>292 それでなんで9000行?もしかして表の縦数列をずーっと変えている
とか?
294 :
Name_Not_Found :04/07/07 01:11 ID:4GZ84nlM
ホバーウインドウって 人気あるの?
ホバーウインドウ? ポップアップウィンドウのこと?それともただのいわゆるポップアップ?
>>283 >document.writeの代わりに直接タグを打ち込むと約40秒程で
> 読み込みが完了しますのでHTML自体には問題無いと思います。
多分、これが嘘。
そのdocument.writeのどこかに問題があると思われ。
\"の間違いとかで、変なhtmlになってないか?
てっゆーかJavaScriptだけで商品数・価格によって変動する動的ページ? 商品数・価格はどこから取得するんだよ
>>297 車のオプション見積もりページなんかみたいなのだろ
>>298 しかしそういうんだったら、オプションとか選ぶとその場で
計算して表示とかいう感じになりそうなもんだけど。9000行
書くというのはやっぱり納得がいかない。
5の平方根を、2分法とニュートン法の 2種類で求める為に、下のようなプログラムを、数学の参考書、 Javascript辞典とにらめっこしながら書きましたが、どうも 構文エラーが出てしまい、上手く働きません。どこが悪いのでしょうか。 すいません、本当に解りません。 <html> <body bgcolor=orange> <center> <h2>5の平方根を、2分法で求める</h2> <script language="javascript"> e=10e-8; a=5; x1=2; x2=3; f1=x1*x1-a; document.write("<table border=3>"); document.write("<td algen=center>" + x1 + "</td>" + "<td algen=center>" + x2 + "</td>" + "<td algen=center>" + |x1-x2| + "</td>"); document.write("<tr>"); while(Math.abs(x1-x2)>e){ y=Math.abs(x1-x2);
document.write("<td algen=right>" + x1 + "</td>" + "<td algen=right>" + x2 + "</td>" + "<td algen=right>" + y + "</td>"); document.write("<tr>"); x3=(x1+x2)/2; f3=x3*x3-a; if((f1*f3)==0){ break }else{ if((f1*f3)>0){ x1=x3 }else{ x2=x3; }; }; }; document.write("</table>") document.write("<h2>") document.write("e=" + e + "<br>") document.write("a=" + a + "<br>") document.write("aの平方根" + x3 + "<br>") document.write("</h2>") </script> </body> </html>
まずは algen から突っ込もうか。
× |x1-x2| ○ (x1-x2) 見間違えた?
304 :
Name_Not_Found :04/07/07 21:24 ID:LeqrcjfY
>302-303 そこ直したら、あっさりできました…ありがとうございます!! 物凄く助かりましたjavascriptとともに、数学も勉強しなおしてきます。 本当に、ありがとうございました。
ていうかそんな平方根求めるようなスクリプトなんにつかうんだ? 利用方法がまったく思いつかない
学校の宿題
プログラムを書く練習じゃない?
世界経済を救うための計算だよ
inputの中に入力したものをリアルタイムで表示させたいのですが、 <form name="mform"> <input type="text" name="test" size="35" value="" onkeyup="document.writeln(mform.filter.value);"> </form> こうするとすべてページが消えた上にポツリと内容が表示されます。 表示する場所などの指定がよく分かりません。どうにかできないでしょうか?
ミスりました。 ○mform.test.value ×mform.filter.value
innerText
東京DOM
>>311 ありがとうございます。
無事に動作させられました。
>>312 ,313
FAQにあったのにすみませんでした。
innerTextでとりあえず動作できたのですが、
DOMの場合はどんな感じになるんでしょうか?
とりあえずサンプルをいじくっているのですが、
function test1(){
var theNode = document.getElementById('testmes');
theNode.firstChild.nodeValue = "てすてす";
}
<p id="testmes"></p>
..(略)
<input type="text" name="test_input1" value="あいうえお" onkeyup="test1();">
この"てすてす"を単にmform.test_input1.valueとしただけではダメですよね...。
どうやったらvalure値が取得できるんでしょうか?
>>315 普通にgetElementByIdとかでもいいし。で、valueプロパティ
319 :
313 :04/07/08 22:33 ID:???
>>315 それだったら、onkeyup="test1(this);" ってすれば。
あと、原理主義的かもしれないけど、空のpはよくないです。
320 :
Name_Not_Found :04/07/09 00:51 ID:i8VR6geA
<!-- var tx=Array(); tx[0] = "あいうえお"; tx[1] = "かきくけこ"; tx[2] = "さしすせそ"; document.writeln(tx); //--> これを実行すると あいうえお,かきくけこ,さしすせそ の様に「,」で区切られるのですが、 この区切りをなくす方法を教えてください。
あげちゃった
え〜と、別スレで質問したら誘導してもらい、ここにきました。 マルチすんません。 今、myHPにアンケートを挿入しようとしています。 そこで一つの案というか壁にぶち当たりました。 はい、いいえのラジオボタンで 「はい」だったらその下のフォームオブジェクトが使えて、 「いいえ」だったらその下のフォームオブジェクトがグレーになって使えなくなるような プログラミングってありますか? 例えば・・・ 以下のアンケートに答える気がありますか? ○はい ○いいえ で「はい」にチェックを入れるとそれまで記入できなかったフォームに書き込めるようになるみたいな・・・ 当方素人なもので果たしてこのようなことが出来るかどうかも分かりません。 私の希望に添うようなページなどありましたらURLを示して頂ければ幸いです。 CGIは少々勉強してのでソースみて何とかしたいと思っています。 どなたか知っている人いたらご教授下さい。
<!--
var tx=new Array();
tx[0] = "あいうえお";
tx[1] = "かきくけこ";
tx[2] = "さしすせそ";
document.writeln(tx.join(""));
//-->
とやったらできました。
>>322-323 ありがとうございます。
>>324 チェックが「いいえ」についてたら
オブジェクトのdisabledプロパチーをtrueにすりゃよろし
ステータスバーに「実行しましたが、ページでエラーが発生しました」 と表示されるのを、表示させないようにすることはできますか? もちろんエラーを直すこと無しにです。。
>>327 エラーが起きないように直せる実力がないのならJavaScript
なんかやめた方がいいと思うけどねえ。ちなみに答えは「できます」
で、その方法は検索すればすぐ分かると思うよ。だから書かない。
330 :
327 :04/07/09 18:01 ID:???
>>328 エラーの原因もわかってるのですが
第3者のデータを扱ってるので
独力では中々解決するのが難しくて・・
後散々検索しても見つかりませんでした
データがどうであろうとコード側でチェックして まずい動作をしないようにすればいいだけのことだが。 「onerror」だよ、もろじゃん。もっかい検索すれ。
森田検索
333 :
329 :04/07/09 19:47 ID:???
onerror ってそういう使い方だっけ? try catch の方じゃなくて?
334 :
327 :04/07/09 20:24 ID:???
onerrorにしろtry catch にしろ ステータスバーのエラーを表示させないために 何を記述すればよいのかさっぱりわかりません
>>334 あららまだわかんない?
onerrorを空の関数でハンドルすればいいんでしょ。
下のでどーよ。
<html>
<head>
<script>
window.onerror = new Function( "" ) ;
</script>
</head>
<body>
<script>
a = ; // エラーになるコードをわざと書いておく
</script>
</body>
</html>
>>324 レスつかないみたいですね。
IE6とNN7以外で動作するコードは↓のような雰囲気。
<html>
<head>
</head>
<body>
<form>
<input type="radio" name="yesno" checked onclick="idtext.disabled=false">YES
<input type="radio" name="yesno" onclick="idtext.disabled=true">NO
<br>
<textarea id="idtext"></textarea>
</form>
</body>
</html>
ほかの書き方は
「javascript disabled」というキーワードでぐぐれば
いくらか出てくる。
338 :
324 :04/07/10 12:59 ID:???
>>326 >>336 レスどうもありがとうございます。
なんとか出来そうです。
ところでdisabledの命令先が2箇所以上になる場合どのようにフォームを指定すれば良いのでしょうか?
idtext.disabled のidtextをAとすると
A?B.disabled
?には何が入るのでしょうか?
さんざん調べたのですが、分からなかったものでもう一度お伺いすることにしました・・・。
宜しくお願いします。
2箇所別々にtrueにするなり ツリー追って順に処理させるなり好きにしる てか調べ方足りないんじゃないの?
>>339 どうも
>>338 は「1行を超えるコードが書けない」人ではないかと。
もしそうなら何言っても無駄ぽ。
>>338 一冊JavaScriptの本を買って、読破してから再質問してみてください。
このスレの雰囲気からするとJavaScriptの文法を
だいたい抑えている人が対象みたい。
だからあんまり初歩的な質問にまで下ってしまうと
真っ当なレスはつきません。
ちなみに、JavaScriptで複文にするときは「;」(セミコロン)を使います。
制御したいフォームのIDが「A」と「B」だったときは
onclick="A.disabled=false ; B.disabled=false"とすればよいです。
初歩的な質問だからレスつかないんじゃないぞ。 調べりゃ簡単にわかることだからレスつかなかったり煽られたりするんだろ。 過去ログ全部嫁とまでは言わんが、 せめてテンプレにある関連サイトに目を通すくらいはすべき
右も左も分からない人には行くべき道を教えてあげれません 行き先を教えても右も左も分からないので辿り着けないからです
>>342 わかんない人は、どこを見ていいものなのか分からないし
それが簡単なのか難しいのかすら、わかんないのだがね。
どこを見ていいものなのか分からない、 それが簡単なのか難しいのかすらわからない、 それならそこを脱してから質問書き込んでくれ
>>345 そういう人は自分で解決できるから、
質問しないんじゃないの?
そうなるとこのスレの存在が危ういw
「どこを見れ」とか「本を読め」とか「過去ログを読め」とか その人のレベルに相応しいレスはついてると思うよ、一般に。
だな 「親切」であればいいわけではないし
UTF-8に変換せずに、元の文字コードのままURIエンコードする方法ってありますか?
>>349 escape()、unescape()の話でしょうか?
エンコードに使われる文字セットは、ブラウザ依存で
選ぶことはできないと思われ。
Unicode=UTF-8だと思ってんのか… なんでこんなアフォが(ry
>>350 いいえ。元の文字コードのままURIエンコードする方法です。
encodeURIComponentやECMA-262 2nd Edition準拠のescapeではなく
Netscapeのescapeと同じ結果を他のブラウザで実現する方法です。
たとえばshift_jisのページの「あ」を「%82%A0」、euc-jpのページの「あ」を「%A4%A2」のように変換するエンコードです。
>>352 がんばれば自前で関数を書けばできそうだが、ブラウザごとの互換性問題
を完璧に解決するのは、たぶんムリ。
漏れはキミが何をやろうとしているのか、わからない。
エンコードする前のデータはどこからくるのか。エンコード後のデータを
どこへ流そうとしているのか。(サーバ?クライアントクッキー?表示用?)
その近辺をもうちょっと詳しく。
ブラウザごとの互換性問題を完璧に解決するには、 Unicode⇔JIS X 0208完全な変換テーブルを用意するしかないかと。 あともう一つの難関は文書の文字コード検知。 MozやIEならdocument.charsetで取得できるけど 標準化はされてないから取得できない環境もあるだろう。
>>342-348 金魚の糞みたいに連なって無意味なレスつけるな。
スレが読みにくいんだよ。
jsてなんでURLエンコ関数設けないんだろうな、長年疑問に思ってるんですけど・・。
>>356 JavaScriptには、ブラウザ内部の世界から外へは出ない(出さない)
っていう哲学やら思想があるからじゃないの?
一線引かないと、機能が拡張されすぎてワケ分からなくなったり
セキュリティーの穴も空きやすくなったりする。
それは哲学とか思想というより、理念と言うべきかと
Philosophy には、考え方、根本原理みたいな意味もあるわけで、 「哲学(Philosophy)」のような表記をするのはどうかと思うが。
358≠360 でつ。 Philosophy ≡ 哲学 なんて言うのは、一部の業界の馬鹿な技術者だけにしておいてクレー
363 :
356 :04/07/12 05:36 ID:???
>>357 そういう哲学があったとは知らなかったよ、サンクス。
でもURLエンコが出来なくても外へは出せるんだよね、escapeは使えるわけだし。
外に出したいのか出したくないのかがはっきりしなくて中途半端だね。
どうせならURLエンコも実装してくれたらいいのに。('A`)
>>363 のURLエンコが何を指してるのか分からんがencodeURIって関数はあるよ
指定したURLのHTMLソースを文字列として 変数に代入するにはどうすればいいですか
>>368 まず
>>11 のQ2/A2を読め。もし自サーバのURLのソース
だったら改めて質問してくれれば相談にのる。
>>369 別サーバです。CGIで何とかします。ありがとうございました。
371 :
356 :04/07/12 16:28 ID:???
>>365 そ、ソレダ! スマン、知らんかった_| ̄|○
suuji = 100 * 1.15 ↑の計算結果を出力するとなぜか115ではなく、114.99…998となるのですが、原因はなんなんでしょう? 1000 * 1.15にするとちゃんと1150とでるし、10 * 1.15でもちゃんと出ます。 さらに、1.20などだと120と正しく出力されています。なぜか115付近の数値だけダメです。
凄いタイミングで372と同じところに躓いた。 よって質問省略。
>>372-373 コンピュータ上での実数計算は基本的に「近似値」だと思え。
だからあんたが「ちゃんと」と思ってるのは「たまたま」
四捨五入の結果そうなっただけのこと。それが嫌なら整数を
使うしかない。115の付近だけってことは全然ないよ。
375 :
Name_Not_Found :04/07/13 11:32 ID:1ZSgFAj9
タブ移動でリンク用の画像にフォーカスが合った時に時に その画像を差し替えたいのですが方法が分かりません。 マウスのカーソルがあった場合はonmouseout、onmouseoverで 差し替えられるのですがTab移動で画像にフォーカスがあった場合は 駄目なので困っています。 <a>や<img>タグでblur、focusのような効果を期待出来る方法や 他にいい方法は無いでしょうか?
onfocus?
>>375 あんたは調べるということをしないのか。<a>タグにはonfocusも
onblurもあるだろ。何が問題なんだ???
378 :
375 :04/07/13 12:08 ID:???
>>377 様
ご迷惑をお掛けしました
JavaScriptポケットリファレンスにNetscapeでこのスプリクトを・・・と書かれていたので
onFocusは使わない方が好ましいイベントかと勘違いしていました。
>>378 もうすこしちゃんとした本を見た方がいい、
つか、web系はまともな本が、ごくわずかしかないことを
覚えて置いた方がいいかも。
>>372-373 誤解を恐れずに言ってしまえば、コンピューターは小数を扱うのが苦手なので、
そういう数を利用するときは、分数として値を保持していれば基本的に誤差が出にくい。
質問いいでしょうか。 <FORM>内の<TEXTAREA>でタブキー押下でフォーカスを移動させずにタブ文字を挿入しようと思い、 探し回ってみたところ、以下のスクリプトで可能と言うことがわかりました。 <form> <textarea cols="30" rows="5" onkeydown=" /* テキストエリアが選択されている場合 */ if(document.selection){ /* タブキーが押下された場合 */ if(event.keyCode==9) { /* */ r=document.selection.createRange(); /* フォーカスを外す */ this.blur(); /* */ r.collapse(false); /* タブ文字を設定する */ r.text='\t'; /* */ r.select(); /* 戻り値無し */ return false; } } "> </textarea> </form> コメントが空欄になっている部分が具体的にどのような処理を行っているかがわからないのですが、 何を行っているのかを教えていただけないでしょうか。
382 :
Name_Not_Found :04/07/13 16:37 ID:KUjuLGFL
リンク失敗にワロタ。 書けばいいじゃん、日付w
質問が意味不明しかもある意味マルチ
813 名前:Name_Not_Found 投稿日:04/07/13 16:28 ID:KUjuLGFL
最近友達が作ったんだけどどう思う?
http://click-tv.jp
386 :
Name_Not_Found :04/07/13 16:53 ID:KUjuLGFL
387 :
386 :04/07/13 17:11 ID:???
みなさん、このサイトに17:15に、
せーので来てください。
ガンガン来てください。
2ch 晒しに耐えられるかどうかの実験にご協力下さい。
http://click-tv.jp # 他のスレにもどんどんコピペしてください。
388 :
Name_Not_Found :04/07/13 17:12 ID:eP69C9bI
テーブルセルのバックカラーをif文の条件にできますか?? 例えば 黄色の時、白 白の時、黄色 というかんじで。 if(document.getElementById(id).style.backgroundColor=="#FFFF99") を試してみたのですが、できないので・・・・。
>>388 JavaScript のプロパティとして明示されていなければ、
値は参照できないよ(例えば css でやったものとか。)
もし、bgcolor 属性とかを使っているなら、getAttribute みたいのが
あるので、それを使えば参照できる。
でも、td には bgcolor は駄目なので、class 属性を与えて、
色とかは css で、JavaScript は className を参照するように
するのが良いかと。
390 :
389 :04/07/13 17:20 ID:???
>>389 > td には bgcolor は駄目
ごめんなさい。すごくうそ。
>>388 要素.style.backgroundColor="blue"; と設定したやつか、<td style="background-color:blue">
となってるやつならJSで取得できるみたいよIE6とFireFox0.8
>>391 みたい、ではなくて。
要素のstyleプロパティは要素のstyle属性で指定されるCSSプロパティを表す。
393 :
Name_Not_Found :04/07/13 17:47 ID:eP69C9bI
ありがとうございます。 明示してないと無理なんですね・・・。 白と明示したやつをJSで黄色に変更。 その変更したものを条件にしてたのでうまくいかなかったみたいです。
if(document.getElementById('cc').getAttribute('bgcolor') == "#FFCC66".toLowerCase()) <td bgcolor="#FFCC66" id="cc">ABC</td> ※ bgcolorを大文字で書いてもgetAttributeで得られる値は小文字なのでtoLowerCase()を使う
ああ、styleでやってるのか。
じゃあ
>>394 は的外れだった。
>>395 的外れなところ何だけど
getAttribute('bgcolor')の値が小文字で正規化される保証はないので
どうせやるなら getAttribute('bgcolor').toLowerCase() == "#ffcc66" だろう。
# つーか "#FFCC66".toLowerCase() なんて "#ffcc66" で充分。
>>397 保証が無いのに"#ffcc66"で充分?
矛盾していないか?
>>398 そーいうことじゃなくて、文字ケース揃えて比較するのは結構だが
"#FFCC66".toLowerCase() なんて誰が何度やったって
"#ffcc66" 以外にならないだろ、という意味。
400 :
Name_Not_Found :04/07/13 19:58 ID:eP69C9bI
不可能だとは思いますが、質問させていただきます。 二重送信防止策として、 <FORM method="POST" action="test.cgi" onsubmit="return confirm('送信します。宜しいですか?')"> というタグで確認は出しているのですが、OKを押した後にsubmitを 押されてしまって再度OKを押されてしまうと、結局二重送信になっ てしまいます。 このcomfirmを、一度送信を押した後にcaution(「!」のアラート)に 変えるような何か良い方法はありませんでしょうか。 ご教授いただけますと幸いです。
>>400 IEならcurrentStyle
Moz系ならgetComputedStyleだったかな
その辺ググって味噌
「明示」されてる必要はありません
>>401 confirmだのcautionってのは初めて聞いたけど
二重投稿の基本的な回避策はサーバサイドでLocation発行して投稿ページをGETさせることだと思うけど
onsubmitの動作を書き換えたいなら単にスクリプトでオーバーライドすればよかろう
<FORM id="myform" method="POST" action="test.cgi" onsubmit="myconfirm()">
というHTMLなら
function myconfirm(){
document.getElementById('myform').onsubmit = fonction{caution()};
confirm('送信します。宜しいですか?');
}
みたいな
154 名前:nobodyさん[] 投稿日:04/07/12 22:47 ID:EG13IMpu 変数['length']で文字数とれるみたいなんだけど これってふつうにつかってんの? 155 名前:nobodyさん[sage] 投稿日:04/07/13 13:11 ID:??? Divタグにスタイルシートでoverflowを指定し、 フレームのような画面分割を行っているのですが、 このDiv内のスクロールバーを操作することができません。 JavaScriptで操作することはできるのでしょうか?
>>400 あんたは馬鹿か。そのサンプルの使い方が解るまで入門本を読め。
それ以上的確なアドバイスはないと思う。
>>402 そのサンプルそのものを指し示しただろ。読んでから発言してよ。
>>401 onsubmit="return done?(alert('送信済'),false):confirm('OK?')&&(done=true)||false"
156 名前:nobodyさん[sage] 投稿日:04/07/13 15:52 ID:??? なんでこういうトンチンカン(ry
>>403 ありがとうございます。
参考にさせていただきます。
>>405 アラートすら出ません。
アドバイス有難うございます。
408 :
Name_Not_Found :04/07/13 23:35 ID:DjRfCpXI
初心者ですいません。教えて頂きたいのですが・・・ JavaScriptでシステム日付のファイル名を作成し、 そのファイルにリンクさせたいのですが、上手くいきません。 ヨロシクお願いいたします。 <SCRIPT language="JavaScript"> <!-- today=new Date(); theMonth = today.getMonth()+1; theDate = today.getDate(); function filename(){ filename = theMonth + "_" + theDate + ".html"; } //--> </SCRIPT> <A href=javascript:filename>リンク先</A><BR>
410 :
408 :04/07/13 23:54 ID:???
ありがとうございます! ただ、 <A href=javascript:filename()>リンク先</A> だとちゃんとうごきません。 見るところが間違っていますか?
>>407 最初に「<script>var done = false;</script>」を入れてみて。
エラーが出てるようならその内容を教えて。
>>410 飛ばしたいわけだから関数定義の中、「filename=」とするかわりに
「location.href=」として。あと「href="javascript:filename()"」
のように「""」で囲まないとね。
412 :
408 :04/07/14 00:15 ID:???
ありがとうございます。 しかし、location.href ですと、自動的にそのファイルに飛んでしまう ので、「リンク先」をクリックしたら飛ぶようにしたいのです。 何度もすいませんです!!
>>412 ハア?リンクをクリックすると関数filename()が呼ばれて、
呼ばれるとその中で飛ばすわけだろ?何が問題なんだ?
>>407 コピペで試せるように全部作ってみたが一応OKのようだよ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var done = false;
</script>
</head><body>
<form action="#" onsubmit=
"return done?(alert('送信済'),false):confirm('OK?')&&(done=true)||false">
<p><input name="t0" type="text"><input type=submit></p></form>
</body></html>
414 :
408 :04/07/14 00:35 ID:???
お騒がせしました! ありがとうございました!!
416 :
407 :04/07/14 01:58 ID:???
>>411 すごすぎです。
私が言ったそのとおりの挙動になりました。
感動しております。
本当に有難うございました。
コードクレクレ中しか居ないのな
おまけ
405 名前:Name_Not_Found[sage] 投稿日:04/07/13(火) 22:09 ID:???
>>400 あんたは馬鹿か。そのサンプルの使い方が解るまで入門本を読め。
それ以上的確なアドバイスはないと思う。
>>402 そのサンプルそのものを指し示しただろ。読んでから発言してよ。
>>401 onsubmit="return done?(alert('送信済'),false):confirm('OK?')&&(done=true)||false"
407 名前:Name_Not_Found[sage] 投稿日:04/07/13(火) 22:51 ID:???
>>405 アラートすら出ません。
ダサw
419 :
372 :04/07/14 06:41 ID:???
420 :
381 :04/07/14 09:16 ID:???
>>417 コードがあっても意味が理解できない人もいます。
俺とか。
誰か教えて下さい orz
>>420 検索もデキネェならあれだ、この先生
きのこれない。
>>405 >>413 ですが、今考えて見たら最後の「||false」は不要でしたね。あっても
実害はないけど。
>>381 これってWindowsでしか動作しないんだから、
読解しなくていいと思うが。
いやいや、まずはどのコードも読解できるように勉強しておく というのは基本でしょ。コピペしかできない人にはあまり来て 欲しくないしね。
426 :
424 :04/07/14 13:33 ID:???
>>425 そもそもメソッドとオブジェクトを
片っ端からググって解析完了しちゃうくらいの作業を
読解とは言わないのかもしれんがwww
>>381 はまだわかんないのか。
427 :
??? :04/07/14 20:30 ID:HO5hbpfc
フレーム解除のjsで親の親を指定したいのですが イメージ的にこんな感じ↓ parent.parent.frame.location="***.html" parent.parentの正しい指定の仕方をご教示願いたいのですが・・
>>427 そのframeとかいうのが余計。
parent.parent.location.href = URI;
top.location.href = URI;
どちらでも。
429 :
??? :04/07/14 21:01 ID:HO5hbpfc
frameは<FRAME NAME="frame">なのですが
430 :
??? :04/07/14 21:04 ID:HO5hbpfc
すいません。 parent.parent.frame.location でいけました!!ありがとうございます。
あんたの思うままにプログラム改造したげたりするスレ じゃないんだ。ちゃんと自分でソース読んで分からない とこだけ質問してよ。
435 :
Name_Not_Found :04/07/15 09:12 ID:m8b/fWjQ
このスレって結局は口先ばかりの人しかいないんですね。
JavaScriptって言語そのものが口先だけって感じがするよね。 クラスの実装とか。各社勝手な実装したり。 まあそんな適当っぷりが好きなんだけどね。
質問です。 テキストエリア内で特定の文字列だけの色を変えるにはどうしたらいいんでしょうか?
>>435 面白い質問が出れば結構すごいよ。過去スレ読めば解る。
アンタみたいな煽りが効果ないことも同様に解る(ry
>>436 クラスなんてないがな。無知のくせに知ったかな発言する
んじゃね〜よ。ム板のプロトタイプベース・オブジェクト
指向のスレでも逝って勉強してこい。
>>437 テキストエリア内でなけりゃできるんだけどね。どうしても
テキストエリア内でなくちゃ駄目なの?
>>435 質問自体がぐぐれば分かるものが大半とか、
回答してもその後の返事がないとか、
殺伐とした雰囲気の原因は、このすれ(板)の平均年齢が低いからかと思われ。
441 :
437 :04/07/15 13:38 ID:???
>>439 >テキストエリア内でなくちゃ駄目なの?
タブ文字と空白文字の区別が付けられるように、タブ文字にだけ何かしらの色を付けられたらと思っているのですが。
442 :
Name_Not_Found :04/07/15 13:46 ID:3yi9jt2d
>>439 クラスなんて無いのにある振りをしているから
JavaScriptは中途半端で優柔不断なんじゃないか。
テキストエリア内で色をつける方法を思いついたかも。 IE限定だとは思うけどちょっと試してみる。
>>446 まあもうちっと待ってくれ。
あと、高いCPUスペックを要求される方法なら思いついた。
そっちはすぐに動いたけどCPU負荷がバカ高いのと
あまりにも馬鹿馬鹿しいので脳内会議で却下した。
目にも良くなかったし。
>>437 <div style="color: white; position: absolute; z-index: -1;"></div>
<textarea style="background-color: transparent;"></textarea>
こんな感じでtextareaのonkeyupでdivに内容をコピーしていくとか。
\tは<span style="background-color: red">\t</span>に変換しつつ。
449 :
??? :04/07/15 18:36 ID:WWGuUPpZ
こんばんは。 history.back()について質問させて下さい。 IEのブラウザ上に複数のフレーム(例えば2つ)を作り、 上部のフレームはname="f1"、下部のフレームはname="f2"とします。 f2のボタンの中には「戻る」ボタンがあり、 これを押すとこの画面が出る前戻らせたいので、 onclick=history.back()と記します。 ただこれだけですと、下のf2のみが前の画面に戻ってしまいます。 上のf1にもf2で実行させたhistory.back()を実行させたいのですが、 その場合f2の「戻る」ボタンのonClickにはどう記述すればいいのでしょうか? (このような実装は可能なのでしょうか?) どなたかご存知の方がいらっしゃいましたら、ご教授願えませんでしょうか? よろしくお願いします。
>>449 onclick="parent.frames.f1.history.back();history.back()"
451 :
??? :04/07/15 19:06 ID:WWGuUPpZ
ありがとうございました。 無事解決。 感謝!
>>452 ハア?このスレの常連なら誰でもそんなの瞬時に答えるだろ。
フレームの参照方法と「;」だけじゃん。
>>453 瞬時に答えは解るがそれを素直に書く奴はメッタにい(ny。
>>454 だってあの程度でモメても面白くないじゃん。もうちょっと
香ばしそうな質問のときに楽しめば十分だって。で、瞬時に
答えが出てるのを見た香具師が沢山誘引されるかもよ。
456 :
Name_Not_Found :04/07/16 00:15 ID:iyfZ3rIO
よく有るフォームページをつくってるんですが フォームの中に郵便番号から住所を途中まで検索入力する cgiを仕込んでます。 いまのとこ、郵便番号入力欄の横のaリンクてjavascriptキック→cgi 別ウインド(検索結果の読み込みテンプレートでもある) を開き、そこのinputに検索cgiで検索した住所を 表示、そのウインドのボタンで元のフォームの 住所欄に検索結果を書き戻す、ってことをしてます。 こいつをなんとか、郵便番号入力欄のよこにボタンをおいて クリックすると住所欄に一発で入れることって出来ないでしょうか? <form></form>の間に<input type="buttn">をいれてそいつで javascriptキック→cgiってのはありですよね? サブミットはフォームそのものをcgiに使ってるから そうするしかないんですよね。
457 :
442 :04/07/16 00:24 ID:???
>>456 だから別窓の代わりに隠しフレームにフォーム仕込んでそこ
で検索して結果を入力欄にコピーすればいいんでしょ?
>>457 なんか見てるものが違うんじゃない?別にonloadの動作中で
「document.body.scrollHeight」を参照すればいいでしょ?
>>457 でるがな。いま2ch見ているままでいいから、
url 欄に下記をぶちこんでみ。
javascript:window.alert(document.body.scrollHeight);window.focus();
460 :
456 :04/07/16 01:00 ID:iyfZ3rIO
>>458 うーん、隠しフレームか。なるほど。
今の漏れのやり方は、ボタンでjavascriptキック→cgi検索。
テンプレートのポップアップウインド、おーぷん、背後にまわす。
そしてそのポップアップのonloadで、検索結果を
元ウインドのinputに書き戻してポップアップを閉じる。
というのをやってます。一応動くんだけど、一瞬ウインドが全面に出るんだよな。
なんか、マシンパワーがないマシンだと落ちないか心配。
ウインドをいきなり背面に開くってjavascriptで出来ませんかね?
461 :
442 :04/07/16 01:17 ID:???
>>459 確かにそれだと出るのですが
実際にページ内で値を取得して表示しようとするとおかしくなるのです・・・
例えば
<html><body>
<script language="JavaScript"><!--
document.write(document.body.scrollHeight);
window.alert(document.body.scrollHeight);window.focus();
// --></script>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body></html>
というのを表示した場合。
writeでは15と表示され、
alertでは51と表示されてしまいます。
<br>を何十何百と足しても同じです。
IE6で表示させても同じようです。
>>461 多くの人がwriteは便利な標準出力ていどに思っているかもしれませんが、
document オブジェクトに write した時点で、document が上書きされている
わけです。
write なんて窓から投げ捨てて、dom 使いましょう。
<script>
window.onload = function(){
var tmp = document.getElementsByTagName("body")[0];
var hei = document.body.scrollHeight;
var str = document.createTextNode(hei);
tmp.appendChild(str);
}
</script>
463 :
祀子 :04/07/16 02:59 ID:1mbGvcN1
はにはに〜♪ 質問しにきた自他ともに認める腐女子の祀子でっす♥
みんな〜! よろしくね〜〜〜〜〜♥♥♥♥♥♥
早速質問だよっ! わたしが借りてるレンタルサーバのことなんだけど、
ボディタグ(きゃっ! ぼでぃなんてなんだかエッチ〜♥)の後ろに
のソースを勝手に入れられちゃうんだけどさ
<SCRIPT Language="JavaScript">
<!--
document.write("<img src='
http://foo.com/access.cgi? ");
document.write("referrer="+document.referrer+"'>");
// -->
</SCRIPT>
このjavascriptの "referrer" が返す文字列を偽装するってことは出来ませんでしょうか?
本当のreferrerでなく任意のreferrerをアクセス解析に送っちゃいたいの♥
わっかるっかなァ〜? わっかんねぇ〜だろ〜〜〜な〜〜〜・・・・・
イェーイ!
なんちゃって♥
464 :
442 :04/07/16 03:05 ID:???
>>462 ありがとうございます。
でもonloadで値を得ても、ページ内でその値をimgタグのheightとかに利用したりできないんですよね。
どうやるんだろう・・・
個人的には問題はまだまだありますがレスを下さった方々に感謝です。
>>461 >>464 あんたはバカですか?自分で
>
ttp://east.portland.ne.jp/~sigekazu/css/javascript10.htm > こちらの【document.body.scrollHeight*】の欄の「読み込み完了時」の値が
> 自分の求める値そのものだと思うのですが、ソースを見たら
こう書いているよな。で、あんたがやろうとしたことはそのページの
隣にある「document.write(X)」と同じことだろ? そもそも読み込み
終わる前にブラウザがどうやって「ページの末尾までの大きさ」を
知ることができると思うんだ? ブラウザはE.S.Pでつか?
やりたいことがはっきりしてればDOMを使ってそれを実現するなどの
方法もあるが、あんたはやりたいことをはっきりさせずに実現が絶対
不可能なことを質問してるんだよ、自覚すれ。
で、やりたいことは具体的に何なのさ。たとえばページの左端に画像
入れてそれを縦目一杯引き延ばすとかだったらonloadの中でそれを
やるのは簡単だろ。
>>463 そのdocument.referrerはブラウザがサーバに送り出すHTTP_REFERRER
ヘッダの内容の「控え」だからJavaScript側から書き換えたりはでき
ません。アンタがやりたいことは誰でも一目で分かるアホなことさ。
残念でした。
>>462 …指摘内容が見当違いじゃない?
>>461 はdocument.write()を
ドキュメントが上書きされるような使い方では使っていないよね。
質問内容をよく読んで回答してよ。
467 :
442 :04/07/16 08:28 ID:???
>>465 単に私が不勉強なだけです。ごめんなさい。
何ができて、何ができないかがわかってなかったのです。
貴方の様に何もかもわかってる人じゃありませんので、このように質問させていただいてます。
>で、やりたいことは具体的に何なのさ。たとえばページの左端に画像
>入れてそれを縦目一杯引き延ばすとかだったらonloadの中でそれを
>やるのは簡単だろ。
概ねそういうことです。
私には今のところ実現できていません。
先ほどまでは
http://www.microsoft.com/JAPAN/developer/library/jpisdk/art/dhtmlpos.gif などを見て、scrollHeight等で直接値を求められる便利な方法があるのではないか、という思い込みを持っており、
それを暗黙の前提にして質問をしてしまっていました。
ちなみに
>隣にある「document.write(X)」と同じことだろ?
というのは違うと思います。
自分でできる限りソースを読んだところ、
function ini()内で
getElementsByTagNameでもって
<SPAN>-</SPAN>
を書き換えている(?)と解釈しました。
まだ明確に理解できてませんので
DOMを勉強中です。
>>465 控え〜〜〜〜?
ベンチじゃん。 代打要員じゃん、ショボ〜
出来ないと分かってガックシだけど、ご親切にどうもありがと♥
>>467 > というのは違うと思います。自分でできる限りソースを読んだところ、
そうそう、読めているじゃん。ところがあんたが書いた
>>461 は
> function ini()内でgetElementsByTagNameでもって<SPAN>-</SPAN>を書き換え
になってないっしょ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg() {
var i0 = document.getElementById('i0');
i0.width = 64; i0.height = document.body.scrollHeight;
}
</script>
</head><body onload="chg()">
<div style="position:absolute"><img id="i0" src="t1.png"></div>
<div style="margin-left: 20%"><p>a<br>a<br>a<br>a<br>a<br>a<br>
a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br>a<br></p></div>
</body></html>
471 :
462 :04/07/16 11:44 ID:???
>>466 全く持ってそのとおり。すまそ。
>>464 できる。
window.onload = function(){
var tmp = document.getElementsByTagName("body")[0];
var hei = document.body.scrollHeight;
var MyImg = document.getElementById("hoge"); // 高さを操作したい画像
MyImg.style.height = hei;
}
なぜ出来ないと思った?
472 :
471 :04/07/16 11:44 ID:???
あ、tmp はいりませんでした。消し忘れ。
お前らもちつけ
質問です。 フォームで複数選択の項目をつくって、 選択されていた物のvalueをうまーくクエリ文字列として送信したいのですがm うまい方法はあるでしょうか? <select name="q" size="5" multiple> <option value="a">項目1</option> <option value="b" selected>項目2</option> <option value="c">項目3</option> <option value="d" selected>項目4</option> <option value="e" selected>項目5</option> </select> こうして、このまま送信した時にクエリは ?q=bde になってくれると凄くいいです。 よろしくお願いします(._.
window.onload = function(){ var MyForm = document.getElementsByTagName("form")[0]; MyForm.onsubmit = function(){ var tmp = this.getElementsByTagName("option"); var str = ""; for(var i=0 ; i<tmp.length ; i++){ if(tmp[i].selected == true){ str += tmp[i].value; } } var MyHidden = document.createElement("input"); MyHidden.type = "hidden"; MyHidden.name = "適宜"; MyHidden.value = str; this.appendChild(MyHidden); this.submit(); return false; } } 全部妄想。
>>474 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg() {
var s = '', o = document.forms.f0.elements.q0.options;
for(var i = 0; i < o.length; ++i) if(o[i].selected) s += o[i].value;
document.forms.f0.elements.q0.disabled = true;
document.forms.f0.elements.q.value = s; return true;
}
</script>
</head><body>
<form name="f0" action="#" onsubmit="chg()"><p>
<select name="q0" size="5" multiple><option value="a">項目1</option>
<option value="b" selected>項目2</option><option value="c">項目3</option>
<option value="d" selected>項目4</option>
<option value="e" selected>項目5</option></select>
<input type="hidden" name="q"><input type="submit"></p></form>
</body></html>
教えてくださいまし。 フォームにselectタグかinputタグで、年月日を入力する際、 本日以前の日付しか入力(選択)できないようにする方法は ありますか? もしくはsubmit時にアラートを表示される方法でもいいです。
>>477 えーと。日を先に選択されたらどうすんの。月として今月が
選べないようにとか考えだすと大変だよね。alertで警告とか
なら別に問題はないと思うけど。基本的には、入力された
年月日と本日の年月日を比較するんでしょ。地道にやれば?
なにか分からないとこがあるわけ?
>>477 selectかinputか、とか言ってるが
inputだと事前に入力できないようにするのは無理じゃなかろーか。
inputを使うのであればalertしか手段はない。
selectなら事前に選択できない、
つーかoptionに入れない方法はある。
そこらへんは条件文こねくりまわせばできるハズ
480 :
479 :04/07/16 18:22 ID:???
訂正。 inputはinputでもtextタイプね(´・ω・`)
482 :
Name_Not_Found :04/07/16 19:45 ID:NnCvIZLM
>>463 <script>
var _document=document;
</script>
<script>
function document(){
}
document.write=_document.write;
document.referrer='任意のtanasinn';
</script>
こんなコードが↓の前に入るようにすればいい。
<SCRIPT Language="JavaScript">
<!--
document.write("<img src='
http://foo.com/access.cgi? ");
document.write("referrer="+document.referrer+"'>");
// -->
</SCRIPT>
>>482 つか、それ正しく動く?Mozillaだと「document.write is not a
function」と言われて駄目だけど。もともとwriteはdocumentの
メソッドであればこそ動くようにできてるんで、documentをすげ
変えるのは駄目…だったような気がするんだけど。
484 :
Name_Not_Found :04/07/16 21:05 ID:NnCvIZLM
>>483 IEではうまくいったけど、それ以外は試してない。
変則的なやり方だから無理っぽいね。
どんなブラウザでもうまく
>>463 の目的を果たしたいのなら、
もっと単純に、自動で挿入されるコードを<noscript>や<noembed>で無効化し、
自分で代替のコードを書いておけばいいんだけどね。
>>483 abstructViewのdocumentはreadonlyだから
そもそもdocumentの上書きに失敗するはず。
つか document をごにょごにょ出来ちゃうのは セキュリティhqあwsでfrgtひゅじこlp;
487 :
Name_Not_Found :04/07/16 22:55 ID:BLsKrwc6
初心者です。昨日くらいから始めました。 質問です。 JavaScriptでブラウザにある表に新たに行を追加しようと考えています。 つまり <TR><TD>"文字列"</TD><TD>"文字列"</TD></TR> といった行を追加したいと思っています。 これをブラウザ上だけの処理でしたいのです。 つまり、DBサーバにINSERTしてSELECTで読み出したりせずに ブラウザ上だけでソースに変更を加えたいと思っています。 多分、無理だと思っていますが、どなたかご存知の方がいらっしゃいましたら ご教授の程、よろしくお願い致します。
>>487 勉強すればできるよ。
createElement, createTextNode, appendChild, insertBefore, getElementById
あたりを検索汁。
SQL書けるくらいのレベルなら 質問スレに書かずに自力で調べられそうなもんだが
>>489 それは意地悪じゃないすか。SQLとJavaScript+DOMはスキルの
内容がだいぶ違うよ。
>>487 サンプルは書いたからまあ勉強してみれ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function step() {
var t = document.getElementById('t0'), n = Math.floor(8*Math.random());
if(n == 0)
t.appendChild(document.createElement('tr'));
else {
th = document.createElement('th');
th.appendChild(document.createTextNode('' + n));
t.lastChild.appendChild(th);
}
}
</script>
</head><body onload="setInterval(step, 500)">
<table summary="test" border="2"><tbody id="t0">
<tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th></tr>
</tbody></table>
</body></html>
>>487 > DBサーバにINSERTしてSELECTで読み出したりせずに
connect じゃなくて?
ともあれ、この人、要素を追加するって概念がないのはしょうがないとして、
追加するデータそのものをdocument外から取得できないか、
って聞いているんじゃないのかな?
だとしたらさんざんガイシュツなので、html javascript data bind あたりで
ググってみて欲しい。
すいません。 うんちしてきても大丈夫ですか?
>>492 休み時間に行っておけとあれほd(以下略
496 :
494 :04/07/17 02:42 ID:???
497 :
442 :04/07/17 07:29 ID:???
>>469 そうです。ソースを見てある程度の見当はつけられていたのですが
具体的にどうすべきか、というところまでは至っていませんでしたので・・・
お陰様でこの問題については解決できました。
返事が遅くなりましたが、大変勉強になりました。
ありがとうございます。
DOMで要素を追加出来るようにはなりました。 要素の削除は出来るんでしょうか。 アデランス経験者の方、お願いします。
アデランス経験は無いので答えられません
JavaScriptを、CSSみたいに外部指定して実行することはできますか? また、できるなら方法を教えてください。お願いします。
できます。 リファレンスサイト回って調べりゃわかります
502 :
498 :04/07/17 15:28 ID:???
>>499 >>501 解かりました、どうもありがとうございました。
早速ヘアチェックに行ってきます、感謝です。
初めまして。少し教えてください。 とある所でJavaScriptサンプルをダウンロードし、 自分が使いやすいようにswitchやDIV固定などをして作りました。 なんとか自分がやりたい動作は出来るようになったのですが、 更新する度に「実行しましたがページ内でエラーが発生しました」と ステータスバーに出ます。 どこが間違ってるのかいくら見ても分からないので教えてください。 配列の[0]が書いてないのはその方がこれから更新する時分かりやすいので そうしました。
504 :
503 :04/07/17 17:31 ID:???
506 :
503 :04/07/17 17:53 ID:???
>>505 ありがとうございました!
237行目を消したら出なくなりました!
これから度々お世話になるかもしれませんがよろしくお願いします。
507 :
503 :04/07/17 17:58 ID:???
508 :
503 :04/07/17 18:00 ID:???
追記 でもTOPが表示されている時のリロード時は背景を出したいです…。 そんな難しいコト出来ますか? 初めて自分一人で組んだJAVA Scriptなのでその他文法が間違っていたらご指摘ください。
>>508 一番簡単確実なのは下側フレームも背景あり版と背景あり版を用意して
上下同時に切り替えることじゃないの。その場合target指定はやめて
<a href="下切替え先" onclick="parent.top.location.href='上切替え先'">...</a>
とするとかかな。
510 :
508 :04/07/17 21:00 ID:???
>>509 レスありがとうございます。
なるほど!その手がありましたか!やり方までありがとうございます。
方法だけだと記述方法が分からなかったと思うので助かりました。
本当にありがとうございました!
TOPだけフレーム無しの1枚にしたほうが簡単かmona
>>510 カーソルを十字にするのは厨の証。 来る客が減るよ。
513 :
508 :04/07/17 21:25 ID:???
>>511 TOPだけ1枚ですか…確かにそれだと簡単ですね…。
戻るボタンでもちゃんと絵戻るし…。
>>512 忠告ありがとうございます。
でもそこまで必死に増やそうと思ってないのでいいです。
単なる趣味&自己満足ページですので…。
>>513 スレ違いだけど、十字カーソルは「座標位置を指定する」というメッセージ
を表しているわけだろ。それを別の用途、カッコのために使うというのは
すげー自己満足で恥ずかしいことなんだよな。Web製作板的には。
515 :
513 :04/07/17 21:59 ID:???
>>514 それでも個人的に十字には思うところあるので…。
ごめんなさい、やっぱり十字のままでいきます。
>>515 窓全体が十字カーソルになっているよりも、何かのオブジェクトの上か、
何かの動作で切り替わるほうがカッコイイと思うのだが、
まあ、自分でデメリットも理解した上で使うなら後は頑張れ。
>>515 同じtiamet住人だと知り、marquee使いまくりでも許そうと思った。
うざいタグはオミトロンで全部無効にしてるからカーソルが変わることはなっしんぐ。
519 :
Name_Not_Found :04/07/18 11:38 ID:lu8AS4Km
黒い三連星
楽しい一年生
>>518 ウザい閲覧者は弾けないのが管理人の辛い所だw
オミトロンといえば作者が亡くなっていた。
せいぜい悲しめ。
うわまじかよ。ショック! って名前も知らなかったが……。
523 :
Name_Not_Found :04/07/19 03:49 ID:WQy33kjm
初めまして。初心者です。最近、始めたばかりです。 以下のソースにてエラーが出ます。 原因が特定できていません。何かお気づきの方がいらっしゃれば、 助言の程、よろしくお願い致します。 【エラー】 エラー: 'document.form1.r1.length' は Null またはオブジェクトではありません。 【ソース】 〜略〜 <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_CODE_40 var count; function BoxChecked(check){ for(count = 0; count < document.form1.r1.length - 1 ; count++){ document.form1.r1[count].checked = true;//チェックボックスをON/OFFにする } } // --> </SCRIPT></HEAD> 〜略〜
524 :
Name_Not_Found :04/07/19 03:50 ID:WQy33kjm
>>160 の続きです。
function SetUp_Table(&$result){
<HR>
<B>設定一覧</B>
<P><BR>
</P>
<TABLE>
〜略〜
<FORM>
<TABLE border="1">
<TBODY>
<TR bgcolor="#ffff80">
<TD nowrap align="center">選択</TD>
<TD>No.</TD>
<TD nowrap align="center">エリアコード</TD>
<TD nowrap align="center">正常/異常</TD>
<TD nowrap align="center">レスポンスコード</TD>
<TD nowrap align="center">レスポンスファイル</TD>
<TD nowrap align="center">応答時間</TD>
</TR>";
525 :
Name_Not_Found :04/07/19 03:51 ID:WQy33kjm
>>160 ,161の続きです。
if ($result != null){
$check_value = 0;
while( $data = mysql_fetch_array( $result) ){
print "<TR><TD align="center"><INPUT type="checkbox" name="r1" value = $check_value></TD>";
print "$check_value<br>";
$check_value++;
print "<TD nowrap align="center">{$data['No']}</TD>";
print "<TD nowrap align="center">{$data['エリアコード']}</TD>";
print "<TD nowrap align="center">{$data['正常_異常']}</TD>";
print "<TD nowrap align="center">{$data['レスポンスコード']}</TD>";
print "<TD nowrap align="center">{$data['レスポンスファイル']}</TD>";
print "<TD nowrap align="center">{$data['応答時間']}</TD></TR>";
}
}
</TR>
</TBODY>
</FORM>
〜略〜
526 :
Name_Not_Found :04/07/19 03:51 ID:WQy33kjm
>>160 ,161,162の続きです。
<FORM name=\"form1\">
<TABLE>
<TR>
<TD>
<INPUT type=\"button\" onclick=\"BoxChecked(true)\"; value=\"全て選択\">
</TD>
<TD> </TD>
<TD>
<INPUT type=\"submit\" name=\"delete\" value=\"選択項目の削除\" onclick=\"ScriptSelectDelete(settinglist)\">
</TD>
<TD width=\"173\"> </TD>
<TD width=\"21\">
<INPUT type=\"button\" name=\"delete\" value=\"リセット\" onclick=\"ScriptSetDefault(settingcode)\">
</TD>
</TR>
</TABLE>
</FORM>
527 :
Name_Not_Found :04/07/19 03:56 ID:WQy33kjm
申し訳ございません。
523-526の先頭に間違った番号を書いてしまいした。
正確には
>>523 ,524,525,526の続きです。
他の質問スレでこちらにて質問するようにと言われたので、
こちらに書かせて頂いています。
>>525 の5行目(print "$check_value<br>"; )はデバッグするための
ものなので気にしないで下さい。
あと、自分がやろうとしてることは、
javaScriptを使用して、
>>526 の全て選択ボタン押下により
チェックボックスの全選択を行うことです。
質問の仕方に不備等がございましたら、
ご指摘くださいますようよろしくお願い致します。
528 :
518 :04/07/19 04:04 ID:???
>>521 作者が死んだらもっと有名なサイトでも記事になると思うんだけど全然載らないね。
まだガセの可能性も十分にある。 馬鹿はすぐ信じるって言うけど本当だね。
すみません質問です。 文字列 "10011001" を16進数に変換するにはどうすればいいのでしょうか?
530 :
529 :04/07/19 04:27 ID:???
あーわかったんでいいです。
>>523 document.form1.r1が表示されてないときに
スクリプトが実行されdocument.form1.r1.lengthを読もうとしたから。
スクリプトをBODYのonLoadから呼び出すか、
SCRIPTタグ自体をFORMタグより後ろに書くか、
<INPUT type="checkbox" 略 checked>
532 :
↑ :04/07/19 04:41 ID:???
すまん、読み間違えてた。
533 :
↑ :04/07/19 04:51 ID:???
>>523 わかった。
FORM2つあるけど、form1はcheckboxが無い方だぞ。
checkboxの有る方は無名。
>>523 そんな小汚いソースだからバグが見つけ難いんだよ。大体PHPの方もエラーだし。
てかPHPは関係ないんだから出力をコピペするべきだろに。
ソースから切り出すんじゃなくてさ。
>>529 2進数を16進数へってことなら
parseInt("10011001", 2).toString(16);
536 :
518 :04/07/19 06:19 ID:???
動かないならネットに転がってるサンプルソースを使ってみるとか、 もっとシンプルなコードを書いて試してみるとかすればいいのに。 解からないからって丸投げしてたらいつまでたってもへぼのまま。
そもそも
>>6 を読んでないんでしょ。
> ソースは要点を整理して出す。
> そのまま貼って動かせると試してもらいやすい。
> 長い場合はアップロードしてURIを貼る。
538 :
Name_Not_Found :04/07/19 16:16 ID:iFy7kHJa
>>531532 ,533,534,536,537
みなさま、ご忠告ありがとうございます。
FORM nameの書く場所を間違えておりました。
しょうもないミスでなんともお恥ずかしいです。
また、自分自身の努力も足りなかったこと、汚いコードで質問したこと、
反省しております。
今後は
>>6 やご忠告を守るようにしていきたいと思います。
ありがとうございました。
539 :
Name_Not_Found :04/07/20 03:39 ID:IDRVrNwz
別窓のフレーム内容を書き換えて表示させたい場合ってどうすれば良いですかね? aaa.htmlの中がフレームで区切られてて、 bbb.html(name:sub) ccc.html(name:main) がある場合で、ccc.htmlの部分だけを書き換えたいのです。 window.open('aaa.html','mado',''); mado.main.location.href = 'ddd.html'; のようなコードだと、うまく出来ません。 良い方法などあったら、教えてください。
540 :
Name_Not_Found :04/07/20 04:59 ID:2VDcEyaF
書き換えるって、別のページの読み込みでしょう? parent.main.location.href="ddd.html"; を使う。
sum1();〜sum10();と作ったのですが for文を使って一度に動かす方法がわかりません 方法を教えてください
>>541 for (i = 1; i <= 100; i++) (window["sum" + i])();
for(var i=1 ; i<=10 ; i++){ var exec_str = "sum" + i; exec_str(); }
>>543 なに大嘘教えてるんだ。それじゃ駄目だろ。
>>542 が正解。
(もっとも10と100とを見間違えているようだけど。)
10()
まぁそれ以前にサブルーチンの設計がおかしいのが見え見えだけどな
ブラクラでも作ってんじゃねーの?
549 :
??? :04/07/20 17:37 ID:QXwkZJit
オブジェクトの指定をする時に直接nameで指定したオブジェクト名ではなくて JSのなかで自分で編集したものをnameとしたいときの書き方がわかりません。 例えばtdのname=back01〜back05がある。 back01.style.backgroundColorではなく for(i=0; i<5; i++){ alert("back0"+i.style.backgroundColor) } 上のイメージでbackgroundColorの値を欲しいのですが "back0"+i.style.backgroundColorではエラーになります。 ご教示下さい。
>>549 JavaScript が生成した要素ってこと?
なら生成した時点で変数にでも入れておけばいいのでは。
--
/* 生成 */
var MyInput = new Array();
for(var i=1 ; i<=5 ; i++){
MyInput[i] = document.createElement("input");
}
/*参照*/
window.alert(MyInput[3].style.backgroundColor);
--
ただし、css で指定した background-color は backgroundColor では
参照できないので悪しからず。
ベリーメロン・・・・
なんだよ、厨ばっかりじゃん。
本当に必要な情報はちゃんと指示されてるんだけどね。まあ 後で時間あったらサンプル貼ったげるよ。
555 :
Name_Not_Found :04/07/20 18:58 ID:vgdzu0RK
javaScriptはブラウザに邪魔で余計なギミックつける為にある、みたいな印象があって 一歩踏み込むのに躊躇してたんですが、質問です。 一定時間毎にCGIへフォーム送信したいのですが、javaScriptでそれは可能ですか? 答えは、可能か不可か、、だけでいいです。よろしくお願いします。
余裕可能
>>555 possil !
PS:
>javaScriptはブラウザに邪魔で余計なギミックつける為にある、みたいな印象
そういう使い方をする人が多すぎるために嫌われ者扱いにされているのは事実.
しかし,使い方しだいで おもしろい事ができる potential を秘めているのも事実.
558 :
555 :04/07/20 20:45 ID:???
>>556-557 ありがとー
早速本買って勉強しまっする。
職場のみんなが「うぉっ!」っと言うようなツール作ります。
いや、作るつもり。
>>558 ポイントは、自窓で素直に送信しちゃうと返送されてくるページに
置き換わってしまうためスクリプトが中止されてしまうこと。これ
を避けるためには、targetを指定してCGIからの結果を別窓、別
フレーム、隠しフレーム等に誘導すること。
>>539 うまく出来ない原因は、そもそもウィンドウを開く部分…
window.open('aaa.html','mado','');
を
mado = window.open('aaa.html','mado','');
とする。ただ、このままだと、新しく開いたウィンドウが読み込み完了していないために、
用意されるべきオブジェクトが出来上がる前にそこへ新しく読み込もうとするため、エラーが出る。
すでに「mado」というウィンドウを開いている状態で、さらにフレーム内の「sub」「main」が
認識される状態なら問題ない。
onload を利用する方法もあるけど、フレームを使った場合は面倒なので、
aaa.html を事前に用意するよりは、スクリプト側で生成させたほうがうまく動くと思う。
>>540 は根本的に的外れだったかも知れないけど、上記理由からすでに読み込み完了で、
nameも認識されているため、別窓から、というのを諦めれば一番確実に動く。
562 :
555 :04/07/20 22:29 ID:???
>>559-561 ありがとー
現行でwebインターフェースのDBクエリツールがあるんです。サーバ側はperlで自作です。
で、最新情報をクエる度に、フォームに指定された検索ワードやオプション情報をメソッド=POSTで
送信するんですが、結構このツールの使用頻度が多くて、最近クリックもめんどっちくなってきて
何とかしたいけど、「あの」javaScript使うしかないんだろなーって思って
>>555 の質問に及んだわけです。
ググッても、なかなか見つからなかったので。
又、こうしれば?みたいなのがあれば、是非教えてほしいです。
>>562 post の場合、submit しなくてはならないのでどうしてもページ遷移が必要。
なので、
>>559 の言うように、iframe とか小さく作って置いて、
そこにめがけて submit() すれば。
get で済ませられるなら、
var tmp = document.createElement("img");
tmp.src = "hoge.cgi?fuga=hage";
とか。
564 :
555 :04/07/20 22:53 ID:???
>>559 >>563 thanks
なるほど、リザルトは別フレ-ム表示が必須なわけですな。。
メモメモ
>>549 TDにNAME属性なんて指定できるの? IDなら大丈夫だけど。
>>566 >>1 このスレに書き込むことが許されるものは以下のとおり
・スクリプトを組むための最低限のHTML・CSSを理解する者
>>567 (゚Д゚)ハァ?
「スクリプトを組むための最低限のHTML・CSSを理解」した上での
JavaScriptの質問を受け付けるってことだろ?
どこをどう拡大解釈すればHTMLタグの属性の質問受け付けることになるんだ?
目糞鼻糞
JavaScript+DOMでHTML要素をアクセスする場合、HTMLが標準に従って 書かれているかどうかが問題になる。標準に従っていなくても IEやGeckoで大丈夫ならまあいいという考えもある。だから無関係 じゃないだろバカヤロ。
DOMスレ立ててそっち行け
>>572 現実を見てなさすぎだろ。DOMによる操作を除外したら
JavaScriptでやることのネタがほとんどなくなるよ。
>>571 ももっともだが
このスレに書き込むことが許されるものは以下のとおり
(中略)
・スクリプトを組むための最低限のHTML・CSSを理解する者
(以下略)
なんだから、質問者はHTMLについて最低限理解してるわけだし、
たとえDOMでいじくる要素のプロパチーに関連してても
HTMLの質問に答える必要性は薄いんじゃないかな。
そもそも、現状、web制作板にはStrictHtmlスレもCSSスレもあることだし、
尚更こっちでHTMLに言及する必要はない
575 :
565 :04/07/21 12:55 ID:???
あのー、
>>565 なんですけど。なぜあの質問をしたかというと。
getElementById()を使った例題は問題なく動くんですよね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
for(var i = 0; i < 3; ++i) {
var c, e = document.getElementById('t' + i);
if(e.currentStyle) c = e.currentStyle.backgroundColor;
else if(!window.getComputedStyle) c = '???';
else c = getComputedStyle(e, '').getPropertyValue('background-color');
alert(c);
}
}
</script>
</head><body onload="test()">
<table summary="test" border="2"><tbody><tr>
<td id="t0" style="background-color: yellow">Yellow</td>
<td id="t1" style="background-color: purple">Purple</td>
<td id="t2" style="background-color: green">Green</td></tr></tbody></table>
</body></html>
それで書き込もうと思ったのですが、
>>549 で質問者がtdにnameつけて
いると書いてたので、(1)idをnameに取り換え、(2)getElementById(...)を
getElementsByName(...)[0]に取り換えてみたらGeckoでは動くけどIEでは
動かない(「currentStyleはNullまたはオブジェクトではありません」)
んですよね。もちろんhtmllintでも「tdにname属性は駄目」というエラーが
出ます。だからやっぱりTDにNAMEはまずいんじゃないでしょうか。うまく
行くっていう人いますか?
最初からそういう風に書けばよいのに。 確かにこういう質問をStrictスレやCSSスレに出しても JavaScriptスレへ逝けと言われるには違いない(ry
>>575 この件に限らないが、invalidな文書の処理はDOM仕様の範囲外。
文書中のエラーについて何ができても何ができなくても
その挙動は正しくも間違ってもいない。どんな動作結果も保証されない。
それを踏まえた上で、マズいかどうかは個別に判断すればよい。
>>577 のような説明だけで済めば楽なんだろうけど、実際にはinvalid
じゃないのとだけ指摘するとわらわらと叩きにくる奴らがいて
結局懇切丁寧にまずい場合について実験して差し上げるという
御苦労様な状態になるというわけだな。しかしJavaScriptスレ
でDOMを扱うなという奴にはあきれた。もう29スレ目なんだろ、
過去スレを読んでからものを言えよって感じ。
今回の件と(「TDである」以外は)何の関係もないサンプルですな。 何が言いたいんだ?
>>578 > 実際にはinvalidじゃないのとだけ指摘すると
指摘するならinvalidであることではなくて
不特定の清く正しいDOM実装間における動作保証がないことだと思うが。
それが気になるかどうかは質問者の状況次第だ。
少数の限定された実装のみが対象環境であるなら
W3C標準より各開発元の公開情報の方が動作保証を期待できるし。
>>580 IE5.0 動作確認済.
getElementsByTagName は DOM level1 なので,
一般的に使われている web browser ではサポートされていると考えて良い.
(NN4.x, IE4.x は知らん.)
>>581 そもそもIEで動かないんでしょ。普通それだけでだめじゃん。
>>582 そんなの問題ないに決まってるじゃん。だから何がいいたいのさ。
>>583 td に name もしくは id を振るのは面倒だし,スマートじゃない.
って事かな ?
下記は、郵便番号の下4ケタの全角数字を半角数字に変換するスクリプトですが、 これを、郵便番号下3桁(name="zip2")と電話番号(name="tel")にも実装したいと思ってます。 ですが、このスクリプト全体を3回書くしかやりかたがわかりません。 onblurで関数を呼び出すとき、現在のオブジェクトを表すにはどうすればいいのでしょう? <SCRIPT LANGUAGE="JavaScript1.2"> <!-- var char_zen = new Array("1","2","3","4","5","6","7","8","9","0"); var char_han = new Array(1,2,3,4,5,6,7,8,9,0); var count; function zen2han_zip1(){ var data = document.f.zip1.value; while(data.match(/[0-9]/)){ for(count = 0; count < char_zen.length; count++){ data = data.replace(char_zen[count], char_han[count]); } } document.f.zip1.value = data; } //--> </SCRIPT> <form name="f" method="post" action="index.cgi"> 郵便番号<input name="zip1" type="text" id="zip1" size="3" maxlength="3" onblur="zen2han_zip1()"> -<input name="zip2" type="text" id="zip2" size="4" maxlength="4" onblur="????????????()"><br> 電話番号<input name="tel" type="text" id="tel" size="12" maxlength="12" onblur="????????????()"> </form>
>>585 そのスクリプトがいつ発動するのかにもよる。
つか、それそのままブラウザで見たら、
document.f.zip1.value は見つからん!ってエラーになる、でしょう?
イベントハンドラ、を調べてみると良いかも。
そのスクリプトを関数化して、onkeyup とか、onchange、onsubmit で
やるのがよいかもね。
>>584 個数を数えるほうがよっぽどマズいのが普通だよ。アンタが個数を
数えるの大好きなのはよく知ってるんで、好きなようにやってて
いいからさ。他人に押しつけないでくれ。
>>585 関数には「パラメタ」が渡せるんで。そしてonblurの中ではthisと
書くことで「このinput要素」を表せる。だから「onblur="zen2han_zip1(this)"」
として3つとも「この要素」を渡す。そして
(1)「function zen2han_zip1(e) {」のようにしてパラメタを受け取る。
(2)「var data = e.value;」として渡されたinputの値を加工する。
(3)処理し終わった時の書き戻しも「e.value = data;」として渡されたinputに書く。
だいたいお分かりかな。
588 :
585 :04/07/21 19:29 ID:???
あ、すみません、 <script>から</script>は<head></head>内に書きます。 >そのスクリプトを関数化して、onkeyup とか、onchange、onsubmit で >やるのがよいかもね。 関数化すること自体はわかるのですが、 onblurでもonkeyupでも、 郵便番号でも電話番号でもその関数を使い回せるようには、 zip1やzip2やtelといったnameをどうやってわたせばいいのでしょう?
589 :
585 :04/07/21 19:36 ID:???
あ、すれ違いで
>>587 さんが答えてくださいましたね。
ありがとうございます。試したところ、ばっちり動作しました。
ありがとうございます。
590 :
質問です :04/07/21 19:47 ID:S8p5OvOc
下記のように足し算をしたいのですが、TextBoxに"2.03"など 一定の小数を入れると値が"2.0299999999999"などと勝手に 変換されて正確に計算できません。どうすれば正確に計算できるのでしょうか? お願いします。 function testval(){ document.getElementById("test1").innerText = Number(document.testform.val1.value) + Number(document.testform.val2.value) ; }
>>590 質問前にこのスレくらい全部読め!
>>372-374 にズバリあるだろ。
ときにこの問題もFAQに入れるかねえ(次スレにFAQを残すとして)。
>>591 そうやって答えてくれるから、手っ取り早くて助かります。
ありがとう。
593 :
585 :04/07/21 21:22 ID:???
>>585 です。さきほどはありがとうございました。
ところで、教えていただいたものを応用しまして、
「URIを入力してもらうテキストボックスで、全角が入れられたら自動で半角に変換するスクリプト」を作りまして、
手元のWinのIE6とNN7.1では動いているようなのですが・・・特にこれ、問題ないですよね?
一応・・・念のためというかんじで投稿させていただいているのですが・・・
なお、以下の点に考慮してます。
//★注1:3種類の全角ハイフンに対応
//★注2:URIで使用可能な文字は以下の通り(参考:RFC2396
http://www.ietf.org/rfc/rfc2396.txt )
// 0-9 - A-Z a-z _ . / ~ , $ ! * ' ( ) ; : @ = & +
// これ以外の記号や日本語は%nnの形式にエンコードされる
//★注3:日本語ドメインなどの類は無視
スクリプトそのものは、次のレスに書きますが、
http://www.geocities.jp/daisuke_ja/uri_zen2han.html にも一応同じものをおいておきます。
594 :
585 :04/07/21 21:24 ID:???
で、スクリプトです(2chの仕様により、長すぎる行(配列)は途中で改行いれてます) <html><head><title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head><body bgcolor="#FFFFFF" text="#000000"> <SCRIPT LANGUAGE="JavaScript1.2"> <!-- var char_zen_URI = new Array("1","2","3","4","5","6","7","8","9","0","ー","−","−", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","_",".","/", "〜",",","$","!","*","’","(",")",";",":","@","=","&","+","%") var char_han_URI = new Array("1","2","3","4","5","6","7","8","9","0","ー","-","-","A","B","C","D","E","F","G", "H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j", "k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","_",".","/","〜",",","$","!","*","'","(",")",";",":","@","=","&","+","%") function zen2han_URI(e){ var data = e.value; while(data.match(/[0-9ー−−A-Za-z_./〜,$!*’();:@=&+%]/)){ for(count = 0; count < char_zen_URI.length; count++){ data = data.replace(char_zen_URI[count], char_han_URI[count]); } } e.value = data; } //--> </SCRIPT> <form name="f" method="post" action="index.cgi"><input type="text" name="url" onblur="zen2han_URI(this)"> (中略)</form></body></html>
>>593-594 まず文字単位のマッピングにその方法はあんましよくないと思う。
var s1 = 'ABCDE';
var s2 = 'ABCDE';
var map = new Object();
for(var i = 0; i < s1.length(); ++i) map[s1.substring(i,i+1)] = s2.substring(i,i+1);
のようにして変換表を初期設定し、変換は
var out = '';
for(var i = 0; i < data.length(); ++i) {
var c = data.substring(i, i+1);
if(map[c]) out += map[c]; else out += c;
}
のようにして表引きしながら変換するのがいいと思うけど。
それはそれとして、日本語文字を「%nn」にするのは大丈夫?
UNICODEでいいのなら問題ないけど他の文字コードにはJavaScript
では変換できないからね。
596 :
Name_Not_Found :04/07/21 22:31 ID:Kd9oBo9/
質問! JSのsplitの使いかたについて Perlでいう (my $a , my $b ) = split/1/,'abc1def'; をJSでやる場合は var a = 'abc1def'.split('1'); でやってa[0]とa[1]で使えばいいのかな? この場合は、 var a = new Array(); とちゃんと書いて置いたほうがいい?
>>596 不要。split()は配列を「常に生成して返す」から、
var a = new Array();で用意した配列は「単なる無駄」
になるだけ。
598 :
596 :04/07/21 22:40 ID:Kd9oBo9/
599 :
585 :04/07/21 22:41 ID:???
600 :
Name_Not_Found :04/07/21 22:41 ID:P0IePdRZ
window.open() と window.close() を組み合わせて、 最初に開いた1枚目のページのリンクに、 2枚目を開いて1枚目を閉じる、って イベントをあてたいんだけど、どうしたら可能でしょう? (リンク元:h0.html) <a href="#" onClick="window.open('h1.html','plate1','width=100,height=100')">1枚目を開く</a> (1枚目:h1.html) <area shape="rect" coords="15,15,200,50" href="javascript:window.close()" onClick="window.open('h2.html','plate2','width=200,height=200')" target="_blank" alt="2枚目を開いて1枚目を閉じる"> ↑これでやってみたけど閉じなかった。
601 :
585 :04/07/21 22:43 ID:???
>>595 さん
ひとつ言い忘れ。
>それはそれとして、日本語文字を「%nn」にするのは大丈夫?
>UNICODEでいいのなら問題ないけど他の文字コードにはJavaScript
>では変換できないからね。
日本語文字はそのままにしてしまおうというポリシーなので、だいじょぶです。
ありがとうございます。
>>600 うーん?「href="setTimeout('window.close()',500)"」とかどうかな。
taget="_blank"は要らないんでは。
普通は onClick="window.open('h2.html','plate2','...');window.close()" だと思うが。
javascriptで連想配列を作って、そのキーのリストを取得するにはどうすればいいかな? var test = { "a":1, "b":2, "c":3 }; このハッシュのキー一覧を配列として使いたい。
>>604 for(var key in test) alert(key);
うーん、どのチュートリアルかな。その説明はヘンだし、 オブジェクトとインスタンスって同じものだと思うけどな。
608 :
606 :04/07/22 00:03 ID:???
>>606 その説明は間違い。
そこで言っている「愛称」はJavaScriptで言うなら「識別子」だろう。
JavaScriptではあるコンストラクタが生成したオブジェクト(識別子ではない)を指して
非公式にインスタンスという用語を用いることがあるが
この語に関する公式な定義はない。
オブジェクト=オブジェクト インスタンス=実体 リファレンス=呼び名 という気持ちが。
正直、ECMAScriptチュートリアルは 解ってる人が読む分には適当に修正しながら読めるし 「そこそこ動くコードが書ければいい」程度の目的ならまあ果たせると思うが 深く勉強することを目的として読むには 誤解を招く表現が目立つので個人的には勧めない。
612 :
606 :04/07/22 00:16 ID:???
>>609 そうなのかorz
インスタンスってイマイチ理解できないと思っていたら、あまり公式な用語ではないのか。
じゃあインスタンスについては深く考えずにいけばok?
後、例えば
a=1;
のaはオブジェクトだよね?どこかのメモリに格納して、そのメモリ内の値がオブジェクトで、
aという呼び方自体はオブジェクトではなくて、格納されてるメモリ番地を格納してるだけ?
駄目だ。もう少し色々読んでから質問しよう。
これは、new の役割を考えれば分かります。 new はメモリ上に記憶場所を確保して値をセット(オブジェクトの作成)した後、そのポインタを返す関数です。そしてインスタンスはその返されたポインタ(=メモリ番地)を格納する場所となります。 そのサイトこんなのもあるな
>>602 setTimeoutってこういうのにも使えるんだー。
>>603 デキタワァ*・゜゚・*:.。゜(n‘∀‘)η゚・*:.。゜゚・* !!!
そっかこういう書き方もありなのか。
サンプルコードとかリファレンスばっか
にらめてても駄目だな。
勉強になりますた。
>>610 リファレンスはアドレスを保有してるだけでしょ
>>612 JavaScript(ECMAScript)は仕様どおりに動作するのであれば
実装方法を問わない言語だ。メモリ番地云々のくだりに限らんけども、
どっちかっつーと他の言語(CやJava)からやってきた人向けの
動くコードを書くための手っ取り早い説明だと思われ。
jsってソースが汚いよね。 何よりもdocument.writeが汚い。 読みづらいというか。 後はCSSであれだけバラバラな実装の各UAに、動作を依存するのが怖い。 まあそんなにおかしなことにはならないだろうけどさ。
>>617 UAの実装の点には同意するが、
誰でも彼でも document.write とかやっているとは思わないでほしい。
むしろdocument.writeは滅多に使わない
620 :
604 :04/07/22 01:05 ID:???
>>605 for ( 変数 in オブジェクト ){}
で、毎回変数にオブジェクトのプロパティ名が入れられるってことだよね?
なんか便利なものがあるんだね。連想配列じゃなくて、クラスにしちゃうことにしたよ。
function MyClass(a,b){ this.a = b; return(this); } こういうシンボリックリファレンス的な使い方って駄目なのか・・・・期待してやってみたら駄目だった;
>>621 何をしたいかわからないけど、javascriptはオブジェクトの持ってるプロパティを
外部から追加できたと思うよ。
624 :
Name_Not_Found :04/07/22 01:30 ID:KIupdqa9
<ol start="1"> <li></li> <li></li> <li></li> </ol> とあって、<li>タグの個数をjavascript取得する方法ってありますか?
>>624 すべてのliの個数を取得する方法はありますよ
data = "1"; これを数値として評価するにはどうすればいいでしょうか? b = data - 0; b = new Number( data ); もっと簡単な方法はないでしょうか? 異なる10個の変数を足し算したいんですが、型が全て数値とは限らないので、 全てちゃんと数値に変換?したいんですが、スマートな方法はないでしょうか?
>>624 OL要素のchildNodesからnodoNameがLIであるもを拾う。かなあ
>>622 with(document){
write("hogehoge");
write("hogehoge");
write("hogehoge");
write("hogehoge");
write("hogehoge");
}
with最強
ある変数が未宣言、未定義かどうかはどうやって調べればいいでしょうか? boose[1]が宣言されてない場合は、変数とさえ認識してくれてない気がするのですが・・・
if(boose[1] == null){ }
631 :
618 :04/07/22 05:21 ID:???
>>622 ノードを生成して、ツリーにぶら下げたり、はずしたりするの。
>>630 それは絶対嘘だろ。一回使った後でもそこにnull入れちゃえるし。
>>629 その前に「boose[1]を宣言する」ってどうやるつもりなの。
「var a;」とかが宣言だよね。「var a = new Array(10);」
とかだと宣言+配列オブジェクトの代入だよね。
「var a[10];」なんてJavaScriptでは書けないし。
>>628 withなんてめったに使わない。読みづらいし。document.write()
も
>>619 と同じくほとんど使わないしね。
>>626 そのnewはなくてもいいよ。「Number(data)」ね。しかしそれより
簡単にはしようがないだろ。個々の変数をそれぞれ数値に変換する
わけだから。変数名に規則性があればループとか使えるだろうけど。
>>624 そのOL要素にid振って
var n = 0, a = document.getElementById('ID名').childNodes;
for(var i = 0; i < a.length; ++i) if(a[i].nodeName == 'LI') ++n;
>>621 なんかヘンな勘違いをしてるんじゃないの。何がやりたいかを
きちんと書いてみれ。
>>612 そのaはオブジェクトじゃなくて変数名だろ。さらにいえば
windowオブジェクトのプロパティ名だけど。
>>617 ソースが汚いのは書いてる奴がヘボなだけ。だって構文とか
Javaとほとんど変わりないんだもの。クラスがないとかはまあ
違うけどね。ヘボ人口が多いのは宿命だな、HTML半可通が
ステップアップとか称して乱入してくるわけだからね。
>>632 >>624 のそれは、ループせなんでも、
a.getElementsByTagName("li").length
で取得できるのではなかろうか。
>>629 一般的には boose[1] === undefined とかで事足りると思うけど
boose[1] = undefined; のような場合を「boose[1]は定義済み」として
区別する必要がある場合は、 boose.hasOwnProperty(1) を使う。
>>634 どういう根拠でそんなことが書けるんだ。
Error: a.getElementsByTagName is not a function
documentオブジェクトが持つメソッドは他のオブジェクトも
持っているとか思ってるならオブジェクト指向が分かってないぞ。
637 :
634 :04/07/22 08:04 ID:???
>>636 あー、ごめん。a って後ろに childNodes ついてたんだね。
すまそすまそ。
document.getElementById("ID名").getElementsByTagName("li").length;
で、よござんすかね。
>>634 子孫ノードの検索ならgetElementsByTagName、子ノードの検索なら
>>632 .
>>624 にそのへんの使い分けが必要かどうかは解らんが。
639 :
634 :04/07/22 08:06 ID:???
>>636 途中でサブミットしちゃった。
getElementsByTagName とか getElementsById とかをメソッドに
持っていないエレメントって、なにがあるの?
>>639 getElementsByTagNameはElementインターフェイスに定義されているから
どのElementも必ず持っているが、
getElementByIdはDocumentインターフェイスにしかないと思うぞ。
641 :
634 :04/07/22 08:15 ID:???
>>640 お、マジで。
情報サンクス。
試してみるよ。
>>642 vol.27あたりに貼ったもの。基本的にはsetTimeout()を使って
一定時間ごとにwindow.scrollBy()で少しずつスクロールさせ、
その「少し」の量をだんだん減らしていく。あー、過去スレの
行方不明のがあると不便だよねえ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var dist = 0;
function test() {
var b = (document.documentElement || document.body)
var w1 = b.scrollWidth, w2 = b.clientWidth, w3 = b.scrollLeft;
dist = w1 - w2 - w3; setTimeout(step, 200);
}
function step() {
if(dist <= 0) return;
var d = Math.floor(dist*0.2 + 1); dist -= d;
window.scrollBy(d, 0); setTimeout(step, 20);
}
</script>
</head><body>
<p>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<a href="#" onclick="javascript:test();return false">test</a></p>
<div style="background: yellow; width: 2000px">test</div>
</body></html>
644 :
Name_Not_Found :04/07/22 13:53 ID:EMvraynd
よくあるこんなスクリプトを外部jsファイルにしてhtml上のinputにメッセージを流してるんですが、 こいつの「こんにちは、きょうはいい天気ですね」だけを外部テキストファイル化することって可能でしょうか? 倉の社長さんが非常に気にいっていて、結構おもしろいことを書くので好評なのでそれはほほえましいのですが 本人にやらせるとどうしても勝手に改行を入れたり「"」を消しちゃったりして面倒なんで msgの内容だけを単純なテキストファイルに出来たらなと思ってるわけです。 外部テキストファイルはブラウザのフォームからcgiで生成させちゃおうかと思ってます。 msg="こんにちは、きょうはいい天気ですね"; function scroll() { msg=msg.substring(1,msg.length)+msg.substring(0,1); document.formのname.inputのname.value=msg; setTimeout("scroll()",200); }
>>644 そのcgiで改行とかを削除して msg="%s"; と出力するしかないかと
646 :
612 :04/07/22 14:38 ID:???
>>632 >そのaはオブジェクトじゃなくて変数名だろ。さらにいえば
>windowオブジェクトのプロパティ名だけど。
そうなのか。javascriptは基本的に
with(window){}状態なのかな?じゃあ
var a=0;
はどうなるんだろ?これの場合もwindowオブジェクトのプロパティの値をいじってることになるのかな?
っていうかjavascriptって外部からオブジェクトのプロパティを直接いじるの普通にありなんだね。
>>645 ちいさーいiframeとかを用意して、その中に呼び込んでごにょごにょする
のが常套手段だけど、cgi 書けるなら、そのままそのページに書き出して
やるほうが手っ取り早いよね。
>>646 JavaScript でのグローバルな変数は基本的にWindowオブジェクトの
プロパティと等価だ、
というようなことがオライリの本に書いてあります。
649 :
Name_Not_Found :04/07/22 14:44 ID:EMvraynd
>>645 どもっす。ほんと、javascriptは苦手なもんで。
このjsファイルの「"こんにちは、きょうはいい天気ですね"」のすぐ両端になんとか識別記号(半角のみ)を
入れることが出来ればそいつの内側だけをCGIをつかったフォームから編集させられるな。
と思ったが、この識別記号、行頭じゃないとうまく認識できないや。漏れのスキルじゃ。
jsソース内の「"」と「"」間の改行を無視させる方法があれば・・・
650 :
629 :04/07/22 14:45 ID:???
>>632 >>635 なんか勘違いしてました。
var boose;
とかしてたから何やっても駄目だったけど、
var boose = {};
としてからundefinedと比較したり、boose.hasOwnProperty(1)とかしたらしっかり反応してくれました。ありがとうございます。
>>644 漏れならメッセージだけ .txt ファイルに書いてもらうことにして
そのファイルを隠しiframeに読ませて普通の文字だけ抽出して使う
ようにするな。
>>646 ローカル変数は違うけど、グローバル変数はwindowのプロパティ。
window.test = 'ABC'; alert(test);
とかやってみればわかる。
>>649 改行削除と " とか \ のエスケープはCGIでやっちゃうんだよ。
次にCGIで var msg = "$msg"; 1行だけのJSファイルを書き出せば良いんだよ。
<script>2つでそのJSファイルと関数郡のJSファイル両方読みこmwxせcrtじげんft
653 :
612 :04/07/22 15:43 ID:???
>>648 >>651 ありがとうです!
なんか意外とjavascriptも面白いね^^perlとの違いで
「いちいち覚えるの面倒だな」
とか思ってたけど、多分perlよりは常識的なオブジェクト指向ぽいから、いいね。
654 :
Name_Not_Found :04/07/22 15:57 ID:EMvraynd
>>647 iフレームも考えたんですけどね、、社長さん、動くのがいいんだって。
「これだけはゆずれない」そうでw
ま、実際、一行スクロールとしては望ましい使われ方をしてるんでなんとかしてやりたいです。
655 :
654 :04/07/22 16:00 ID:EMvraynd
>>652 その社長さんにftpはできればいじらせswでfrgthyじゅきろp;「’
毎日メールでご挨拶送られてきてそれを漏れが直してうpするのはツライ
今JavaScriptを勉強中なんですが、難しくて全然わかりません。 どこか超初心者でもわかり易く、体系的に学べるサイトなどはなでしょうか? ”とほほ”も見たんですが体系的に纏まってはいるんですが、細かい所がイマイチのってなくて わかりませんでした。
>>656 俺が教えてやる。
具体的に何がわからないんだ?
659 :
656 :04/07/22 18:35 ID:???
全体的にわからないんですが、特に関数がわかりません。
>>659 そこまでだったら本読んだ方がいいと思うけどね。
一連の動作に名前をつけたものが関数、という説明で納得する?
function 名前() { 動作; 動作; … ; 動作; }
>>659 こいつネタだろ
テンプレサイト全て読んでも理解できなかったら、軽い知恵遅れの可能性があるからあきらめるしかない。
664 :
656 :04/07/22 20:31 ID:???
つまり関数って、複数の処理(命令)を1つの入れ物に入れて纏める、ただの器みたいな物なの?
------------------------------------- 終了 ------------------------------------- 次の質問ドゾ!!
666 :
Name_Not_Found :04/07/22 20:55 ID:rnNw35hI
ホームページ上で常に動く時計をつくりたいのですが、 次のプログラムで動きませんでした。 どこがだめなのか全然わかりません。 <HTML> <HEAD> <SCRIPT RANGUAGE="JavaScript"> <!--- var TC=0 ; function TimeWatch(){ var time=new Date(); var hour=time.getHours(); var min=time.getMinutes(); var sec=time.getSecond(); if(hour<10) {hour="0"+hour; } if(min<10) {min="0"+min; } if(sec<10) {sec="0"+sec; } document.Watch2.watch2.value=hour+':'+min+':'+sec; //--->
667 :
Name_Not_Found :04/07/22 20:56 ID:rnNw35hI
</SCRIPT> </HEAD> <body bgcolor="#ffffff" onLoad="TimeWatch()"> <P> <FORM NAME="Watch2"> <INPUT TYPE="text" NAME="watch2" SIZE=10> </FORM> </BODY> </HTML>
>>664 機能だと思っておけばいい。
functionは自分で機能を定義できるもの。
まあ実際のとこは関数を完全に理解するにはjsの基本部分をちゃんと理解するべきだから、
後は解説サイトにいきなさい。
669 :
656 :04/07/22 21:17 ID:???
>>668 ありがとうございます。
じゃあfunction自体には特に意味はなく、functionで定義した物に纏めて機能を与えられる物と考えてよいんですね?
あと、関数はfunctionだけなんですか?
>>666 「onload="setInterval(TimeWatch, 500)"」に直してみれ。
今は表示された時に1回だけ時刻を書き込んでるから動かないの。
>>654 ちがうーーーー、ってもういないかな。
iframe を表示用に使うのではなくて、
極小のiframe の中に表示したいテキストファイルを読んでおいて、
JavaScript でそのフレームにアクセスして、中のテキストを読むの。
で、その後は通常通りにごにょごにょしる、ってこと。
document 単位で初期化されてしまう JavaScript で外部ファイル読み込み
をするための苦肉の(常套)策なのです。
>>669 でもね、機能をまとめて名前をつけられるっていうのは偉大な発明
なんだよ。「右見て;左見て;右みて;左見る;」なんて書くより
「安全確認」とか書いた方が絶対分かりやすいわけ。
あと、パラメタが渡せるから毎回必要に応じて違うデータを処理
できたりするよね。それは
>>585-589 を見ると分かると思うが。
自演 (゚听)イラネ
675 :
Name_Not_Found :04/07/22 22:11 ID:vSIu7FYe
>>672 漏れも興味あったんで横やり。
iフレームのソースをhtmlではなくて.txtを読ませる訳ね。
でもそのフレームにはアクセス出来てもそのなかの文字列を
msg="ここ"にどうやって読み込むんだ?
それよか、
>>654 のサーバー上のファイルの一部をフォーム経由で
書き換えるCGIに興味ある。自作ですか?
アドさらしたら、詳しい事聴かせてもらえますか?
漏れ、perlはさっぱりなんで金だしてでも
そのスクリプト欲し(ry
まじ、おながいします
>>654
676 :
656 :04/07/22 22:12 ID:???
>>675 前半の質問は過去スレvol. 8の769-772ね。
後半はWebProg板へ逝くこと。
678 :
667 :04/07/22 22:24 ID:rnNw35hI
<body bgcolor="#ffffff" onload="setInterval(TimeWatch, 500)"> でいいのでしょうか? 私が昔のでやってみたところ、時計表示の窓は表示されたのですが、 中には時計は表示されず空白だったのです
>>676 あんだはjs以前にプログラミング自体の入門書を読んだほうがいいと思うぞ
>>678 あとさあアンタ、エラー出てない?「{」の数と「}」の数が合わないぞ。
681 :
667 :04/07/22 22:42 ID:rnNw35hI
var sec=time.getSecond(); の後を}しないといけないみたいですね。。
>>681 っていうかここはお前の書いたゴミソースを正しく直すスレじゃねんだよ
黙って基本から勉強しなおせ
javaスクリプトを使ってブックマークツールを作りたいんですが ブラウザ上でリストを追加・編集したいんです なにか作成のヒントいただけますてしょうか…
>>681 でアンタはどうしょうもなくサイテーだということを
露呈したから、それ以上誰も助けてくれないと思うよ。地道に
本買って勉強しなって。じゃね。
>>683 JavaScriptでブックマーク勝手にいじれるわけないだろ。
もしいじれるならエロサイト逝ったらブックマークがエロサイト
だらけになるだろうよなあ。あきらめれ。
>>683 そんなウイルスみたいなのはやめてほしいと思うんだが、どうよ?
>>683 追加するとき。
1.追加する文字列から、テキストノードを生成
2.a 要素を生成して、追加する url と1を追加
3.li 要素を生成して、2を追加
削除するとき
1.消したい li を ul から削除
ヒントは、createElement createTextNode appendChild removeChild あたりかな。
ただ、上記の操作の内容を何かしらに保存する場合は、サーバ側に保存
させたり(cgi の技術が必要)、cookie にごっそり食わせたりする
(これはクライアント側だけでOK)必要があるね。
がんがれ。
687 :
683 :04/07/22 23:58 ID:???
あ、誤解を招いたみたいで… ブックマークというよりはリンク集みたいなもんです 認証付きでLi要素を自由に追加・削除できるというやつ
688 :
686 :04/07/22 23:59 ID:???
>>684-685 あ、
>>683 ってクライアントのブックマーク(お気に入り)自体を
いじるって意味なの?それは無理ぽ。
MacIE のブックマークは謎htmlで出来ていて色々出来そうだけど、
やっぱり無理ぽ。
689 :
686 :04/07/23 00:00 ID:???
>>688 だから書き込む前にリロードしろと… orz
>>686 やっぱし保存となるとサーバーサイドかクッキーになるんですか…
とりあえずPHPかJSPでもやってみます
>>690 その前にどうやって登録するつもりでいるのよ。URL窓から
コピペするわけ?そりゃ面倒すぎるだろ。大人しくブラウザの
ブックマーク使った方がましだって。
692 :
686 :04/07/23 00:10 ID:???
すまそ、ヒントが中途半端だった。 getElementById getElementsByTagName createElement createTextNode parentNode childNodes nextSibling appendChild insertBefore removeChild この10個を抑えておけば、そこそこのことは出来ると思うよ。
693 :
624 :04/07/23 00:33 ID:???
>632 >637 やりたいことはolタグの子ノードの検索です。ありがとうです。
なんか自分がその10個をマスターしたから自慢したくて たまらないというふうに読めるね。
696 :
Name_Not_Found :04/07/23 06:39 ID:SAom4d6Z
ブラウザ上(IE)のJavaScriptからWScriptのメソッドを実行する事は できないのでしょうか? 要はWScript.Sleepが使いたいのですが…。 new ActiveXObject("WScript.Shell") とかはOKだから、できそうな気もしないではないのですが。 (これはこれで「警告」出るからうれしくないのですが)
>>696 wscriptとブラウザとでは実行環境が違うので
実行環境が用意するホストオブジェクトの仕様は当然変わってきます。
WScriptオブジェクトはブラウザ上のJScript実行環境では使えません。
setTimeout を駆使して頑張りましょう。
>>696 警告なしに実行できたら黙って重要なファイル消しまくったり
もできることになりますな。sleep()がないとプログラムが
書けませんですか。setTimeout()だって別に問題ないと思うけどな。
ときにVBScriptにsleep()はあるのかな、VBScriptなら警告なし
に呼べるはず。
699 :
Name_Not_Found :04/07/23 09:06 ID:k6GluidM
質問させてください。 現在JSCRIPTを使用しているのですが、変数STRに"AAA,BBB,CCC"というような カンマで区切られた文字列が入っているのですが、それをAAA、BBB、CCCごと の3つの文字列に分割するか、または配列に変換したいのですが、 どなたかいい方法知りませんでしょうか。 稚拙な質問で申し訳ありませんが、何分HTMLの知識くらいしか無い者ですので、 どうか宜しくお願い致します。
>>699 var str = "abc,def,ghi";
var ret = str.split( /,/g );
for(var i in ret)
alert(ret[i]);
こんな感じ?
702 :
Name_Not_Found :04/07/23 11:09 ID:mCJVUzsi
<form id="giko"> <input type="radio" name="auau" id="hoge" value="2ch" onclick="giko.submit();" onkeypress="giko.submit();" /> </form> をネスケ7.1で見たとき、 auauをクリックしたときは無反応で、 選択後エンターキーを押したら動くのはバグですか?
var optVal = new Array(); optVal[0] = new Array( "test1", "○" ); optVal[1] = new Array( "test1", "×" ); optVal[2] = new Array( "test1", "▼" ); optVal[3] = new Array( "test2", "■" ); optVal[4] = new Array( "test2", "●" ); function innerCre( inV ) { myN6 = document.getElementById; // N6 myIE = document.all; // IE if (myIE) myBR="I4"; // ブラウザは IE4以上 else if (myN6) myBR="N6"; // ブラウザは NS6以上 cnt = optVal.length; var str; var listcnt=0 if( myBR == "I4" )str = document.all("innerPoint2").innerHTML; else str = document.getElementById("innerPoint2").innerHTML; for( var i=0; i < cnt; i++ ) { if( optVal[i][0] == inV ){ str = str + '<tr><td bgcolor="#ffffa4">' + (listcnt+1) + '</td>'; str = str + '<td bgcolor="#ffffcc">' + optVal[i][1] + '</td>'; str = str + '<td bgcolor="#ffffa4"><input type="text" size="27"></td></tr>'; listcnt++; } } if( myBR == "I4" ) document.all("innerPoint2").innerHTML = str; else document.getElementById("innerPoint2").innerHTML = str; } ※JavaScript部
704 :
Name_Not_Found :04/07/23 11:18 ID:K+P1vvfh
<body onLoad="innerCre( 'test2' )">
innerPoint2<Br>
<table border="0" cellspacing="1" cellpadding="2" width="100%" bgColor="#ffcd35">
<tbody id="innerPoint2">
<tr>
<td bgcolor="#ffffa4" align="center" width="5%"><b>NO</b></td>
<td bgcolor="#ffffcc" align="center" width="40%"><b>○/×</b></td>
<td bgcolor="#ffffa4" align="center" width="30%"><b>てきすと</b></td>
</tr>
</tbody>
</table>
</body>
</html>
※HTML部(
>>703 のつづき)
ネットスケープだと正常に動いて、IEだと未知の実行時エラーになります。原因がわかりません・・・orz
>>704 これもわりとFAQだな。MSのreferenceのinnerHTMLのところの記述:
: The property is read/write for all objects except the following, for which
: it is read-only: COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT,
: THEAD, TITLE, TR. The property has no default value.
IE4とIE5.5未満を捨ててDOMでやりなさい。そしたらGeckoとIEと共通のコードになる。
>>705 ありがとう。
IE4,5.5切捨ては問題ないのでDOMをちょっと勉強してきます。
708 :
703-704 :04/07/23 15:57 ID:R3DU2G+r
>>707 DOM初めて使ってみましたが面白いですね。
サンプル参考にして無事動的生成が出来ました。ありがとう御座います。
もうひとつ質問なんですが、
t.appendChild(document.createElement('tr'));
td = document.createElement('td');
td.setAttribute("bgcolor", "red");
td.appendChild(document.createTextNode('' + (listcnt+1)));
tdのバックグラウンドカラーを変えることができません。
widthは実行されるのですが・・・。またIEだけですが・・・
>>708 style プロパティでせめてみてはどうか。
td.style.backgroundColor = "適宜";
td.style.width = "適宜";
>>709 ありがとぅ!!
出来ました。
なんか一つやると一つ忘れていく・・・どれがDOMでどれがJavascriptでどれがIEのみで・・
頭が混乱ですorz
>>708 ちなみにHTMLTableCellElementにbgColorプロパティというのもあるよ
>>702 on*="this.form.submit()"
>>708 // 2つ目を推奨しとく
td.setAttribute("bgColor", "red");
td.bgColor = "red";
>>710 アンタが最初に書いたものだけがIE専を含んでいる。このスレで
教えてもらったものは全部Gecko+IE+O7くらいのクロスブラウザ。
JavaScriptは言語の部分だけ。「どんなオブジェクト」「どんな
メソッド」は今回の話の範囲ではすべてDOM。
>>708-712 bgColor属性を書き換えるのはテーブルセル等ごく一部の要素
のみに適用可能。これに対してstyle.backgroundColor = '色'
であればどんな要素にでも適用可能。さらに背景色ではなく
背景画像もstyle.backgroundImage = 'url(ファイル名)'で可能。
だからstyleを使うことだけ憶えてあとは忘れていいと漏れは思う。
>>711 >>712 やってみました。推奨のbgColorを使っときました。
>>713 >。「どんなオブジェクト」「どんなメソッド」は今回の話の範囲ではすべてDOM。
なるほど・・・・勘違いいていたようです。
次は追加したタグ(エレメント?)を削除しないと・・・。
削除はRemoveChildを使えばいいのかな?
とりあえずやってみます
>>710 > どれがDOMでどれがJavascriptでどれがIEのみで・・
DOM ってのはインターフェイスの種類の一つであって、JavaScript とかと
並列に並べて考えるものではないのです。
おいおいわかってくるとは思うけどね。
がんがれ。
717 :
709 :04/07/23 16:50 ID:???
半ば自己レス。 CSS でやった方がいいような気がしてきた。 クラスか id つけて。
>>717 CSSに変えてみます!
削除して追加。この流れで動的に変更できるようになりました。
削除部は以下
var rowArray=new Array();
function del_cell()
{
var t = document.getElementById('optArea');
var len = t.getElementsByTagName("tr").length-1;
tr=t.getElementsByTagName("tr");
for(i=0;i<len;i++){
rowArray[i]=tr.item(i+1);
}
for(i=0;i<len;i++){
t.removeChild(rowArray[i]);
}
}
こんな感じにしてみました。
みなさん本当ありがとう。
>>717 DOMでクラスつけるときは「要素.className = 'クラス名'」だからね。
JavaScriptでは「class」というのが予約語になっているもんで
(実際には使われていないんだけどね)。
>>715 i行j列のセルを消去したい場合は
var td = tbody要素.rows[i].cells[j]; td.parentNode.removeChild(td);
720 :
Name_Not_Found :04/07/23 17:26 ID:2NAhKS2i
>>719 便乗して申し訳ないですが。
obj というオブジェクトにクラス名"foo"を追加するときに、
if(obj.className != ""){
obj.className += " " + "foo";
}
else{
obj.className = "foo";
}
ってすると MSIE が認識してくれないのですが、
なにか良い方法はありませんか?
>>718 t = document.getElementById('tbody要素のID');
while(t.childNodes.length > 0) t.removeChild(t.firstChild);
とかの方が簡潔で分かりやすいかもね。
>>720 classNameに初期値はない(つまり最初に空文字列であるとは
保証されない)ので「if(obj.className) ...」とするのが
いいかも知れない。外してたらスマソ。
723 :
720 :04/07/23 18:44 ID:???
>>722 あ、助言どうもです。
知りたかったのは、クラス属性ってスペース区切りで
複数のクラス名を割り当てるのを、JavaScript ではどうやるのかな、と。
>>723 そりゃもう、空白で区切って書けばいいんじゃないですかね?
この部分だけHTMLと違う書き方にする必然性ないし。
725 :
Name_Not_Found :04/07/23 22:06 ID:jc3iQYa/
ノードについて勉強したいのですがECMAscriptチュートリアルというテンプレにあるサイトを 見てますが見つかりません。テンプレのどのサイトがノードを勉強するのに一番適していますか?
727 :
725 :04/07/23 22:17 ID:jc3iQYa/
>>726 せっかく教えてもらって恐縮ですが英文は読めません。
日本語サイトではノードについては取り扱われてないのでしょうか?
>>725 うーん、DOMのお勉強サイトはどこがいいのかな。
729 :
725 :04/07/23 22:24 ID:jc3iQYa/
>>728 煩わせてしまってすみません。DOMがキーワードなのですね?
後は自分で調べてみます。とりあえずリファレンスサイトをいくつも熟読していけば
いずれはノードにたどり着けますよね。わがまま言ってすみませんでした。失礼します。
731 :
725 :04/07/23 22:32 ID:jc3iQYa/
>>730 ありがとうございます!見に行ってみます。
732 :
Name_Not_Found :04/07/23 22:52 ID:2NAhKS2i
質問です。 td 要素を生成してDOMツリーに追加したいのですが、 この td を colspan="2" と等価にするために vat a = document.createElement("td"); a.colspan = "2"; としてみましたが駄目でした(環境:NN7); うまく探せなかったのですが、colspan を扱う td のプロパティは なんというのでしょうか。 よろしくお願いします。
735 :
732 :04/07/24 00:17 ID:???
736 :
Name_Not_Found :04/07/24 00:50 ID:OnNhDE3L
時刻をリアルタイムで表示できる時計をHTMLタグで作りたいのですが、 htmlタグが分かりません。 次のタグでは□しか表示されませんでした。 助けてください。 よろしくおねがいいたします。
737 :
Name_Not_Found :04/07/24 00:51 ID:OnNhDE3L
これがタグです↓ <HTML> <HEAD> <BODY> <SCRIPT RANGUAGE="JavaScript"> <!--- var TC=0 ; function TimeWatch(){ var time=new Date(); var hour=time.getHours(); var min=time.getMinutes(); var sec=time.getSeconds(); if(hour<10) {hour="0"+hour; } if(min<10) {min="0"+min; } if(sec<10) {sec="0"+sec; }
738 :
Name_Not_Found :04/07/24 00:51 ID:OnNhDE3L
document.Watch2.watch2.value=hour+':'+min+':'+sec; //--->} </SCRIPT> </HEAD> <body bgcolor="#ffffff" onload="setInterval(TimeWatch, 500)"> <P> <FORM NAME="Watch2"> <INPUT TYPE="text" NAME="watch2" SIZE=10> </FORM> </BODY> </HTML> よろしくおねがいいたします。
<SCRIPT RANGUAGE="JavaScript"> を <SCRIPT LANGUAGE="JavaScript"> だな。suretigaidaga,
>>737 □ってインプットボックスだけってことか・・・???
とりあえず
//--->}
の行が限りなく怪しいと思う。
742 :
737 :04/07/24 01:10 ID:OnNhDE3L
あー! ランゲージのつづり間違いはイタイですね。。。
743 :
737 :04/07/24 01:11 ID:OnNhDE3L
744 :
737 :04/07/24 01:18 ID:OnNhDE3L
行けたーーーー
いちいち上げんなボケ!
>>744 無理すればIDがオンドゥルって読めるね
747 :
Name_Not_Found :04/07/24 03:01 ID:NSYcdIw9
<HTML> <SCRIPT LANGUAGE="JavaScript"> function plus(){ var VAL=eval(VAL1.value+"+"+VAL2.value) ; alert(VAL) ; } </SCRIPT> <HEAD><TITLE>TEST</TITLE></HEAD> <BODY> <INPUT TYPE=text VALUE="" NAME="VAL1"><BR> <INPUT TYPE=text VALUE="" NAME="VAL2"><BR> <INPUT TYPE=button VALUE="和の計算" onClick="plus()"> </BODY> </HTML> のVAL1とVAL2をラジオボタンにして予め数値を決めておいて計算したいのですが どのように変えればいいですか?
>>747 何が不満なのか解らん。Number(VAL1.value) とかのほうがよさそうだが。
>>747 なにが不満っていうか、何がしたいのか、どのように変えたいか解らん。
テキストボックスのVALUEにあらかじめ数値を入れて入力不可に
で、ラジオボタンを押すと入力不可を解除?とか。
ラジオボタンは単なる飾りで、テキストボックスはhiddenにするのか…
ふつーラジオボタンを使いたいっていったらこういうことでは。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> var v1 = '10', v2 = '100'; function test() { alert(parseInt(v1) + parseInt(v2)); } function chg(v, e) { if(e.checked) window[v] = e.value; } </script> </head><body> <form name="f0" action="#" onsubmit="return false"><p> <input type="radio" onchange="chg('v1',this)" value="10" name="v1" checked>10 <input type="radio" onchange="chg('v1',this)" value="20" name="v1">20 <input type="radio" onchange="chg('v1',this)" value="30" name="v1">30<br> <input type="radio" onchange="chg('v2',this)" value="100" name="v2" checked>100 <input type="radio" onchange="chg('v2',this)" value="200" name="v2">200 <input type="radio" onchange="chg('v2',this)" value="300" name="v2">300<br> <input type="button" value="calc" onclick="test()"> </p></form> </body></html>
751 :
747 :04/07/24 10:54 ID:???
innerHTMLとか、document.writeで書き換えられた状態のページソース全体を 保存する方法ってあるのでしょうか? (なんかすごく既出っぽいんですがもしそうなら御免なさい)
>>752 ブラウザのブックマークに次のURLを*必ず1行にくっつけて*登録し(名前は
適当につけてよい)、ソースを取りたい時点でそのブックマークを選択する。
あとは開いた窓からコピペ。
javascript:w=window.open('about:blank');
w.document.write(document.body.innerHTML.replace(/</g,'<'));void(0)
>>753 の 「'<'」は「'&<;'」ね、すまそ。
>>754 ウアアアアン! もっかい。「'<'」は「'<'」ね。
>>753-755 もっかい全部貼ります。
javascript:w=window.open('about:blank');
w.document.write(document.body.innerHTML.replace(/</g,'<'));void(0)
757 :
656 :04/07/24 14:20 ID:???
すいません、関数のreturnの意味が良くわからないんですが、returnを付けるとどうなるんでしょうか?
>>757 function 関数名() { 動作; 動作; … ; 動作; }
の動作のどっかに「return;」が含まれていると、それを実行した
ところでその関数の実行がおしまいになる。あんたねえ、本当に
入門書買って読んだ方がいいよ。ここで聞くのも多くの人にとって
迷惑だし(遊んでる自分はなんでもいいけど)、その調子で勉強して
たら何週間たってもマスターできないだろから自分でも損だよ。
759 :
752 :04/07/24 14:45 ID:???
>>756 すばやいレス有難うございます。
なかなか使えそうですが、どうも書き出されたソースは多少成形されているようですね。
<tbody>が追加されてたり、値囲いのダブルクォートが省略されてたり。
あと、<body>〜</body>だけのようですね。
javascriptでの書き換え後のページソースをまるごとそのまんま、ってのが出来るとベスト
なんですが・・・。
アドバイスを参考に、もう少し研究してみます。
>>759 贅沢すぎ。そもそもinnerHTMLやdocument.write()ならともかく、
appendChild()みたいにDOMでツリーをいじくった場合は「もとの
HTMLソース」なんてものが存在しないわけだけど。
まあ研究すんのは自由だが。
761 :
752 :04/07/24 15:29 ID:???
研究してみました。(っていうほどのことではないんですが…) Explorerでスクラップブックをとるか、ネスケで「ページまるごと保存」をすると、 javascript書き換え後のソースをほとんどそのまんま得られるようです。 どうもお騒がせしました・・・。
>>757 数学で言う関数とはこんなもんだろ
y = f(x) = x^2 + 1
この関数をJavaScriptで書けば
function f(x){
y = x * x + 1;
return y;
}
となる。
alert( f(5) ); と書けば 26 とダイアログが出る。
「戻り値」で検索すればサンプルソースは山ほど出てくるはずだ。
function を 関数と言い換えてしまうんじゃなくて、手続きとか一連の処理と 考えてやれば何も違和感なく受け入れられると思うが、どうだろうか? 関数と言うとすぐに数学での関数を考えてしまうから...
そう言えば「変数」って言い方も違和感あったな。 数学での変数は一文字(+添え字)に限られてたから。
functionはクラス
俺的にはサブルーチン
値を返せないのが procedure(Pascalでおなじみ) 値を返せるのが function なのだが。
768 :
Name_Not_Found :04/07/25 03:53 ID:6I0seSdn
window.location.href に関する質問です。 Aのウィンドウのリンクから、(1)と(2)のフレームに別れた Bと言うウィンドウを開いて、(2)の表示だけを変えたい場合はどうすれば良いでしょうか? イメージとしては、下記のようにしたいのですが・・・ B.(1).location.href = 'test.html'; Bの中にJavaScriptを入れるのではなく、あくまでAの中に入れたいのです。 よろしければご回答お願いします。
うーん、けっこうマンドクサイね
>>768 var w = window.open('フレームセットのURI', '適当な名前');
で開いたとして、表示を変えたい時には
w.frames.フレーム2の名前.location.href = 'test.html';
>>767 今時Pascalなんてだれも勉強してないよ。Del厨以外は。
ともかくCでもJavaScriptでもfunctionはサブルーチンで
サブルーチンは値を返しても返さなくてもよい。
DOMの使い方で質問です。 ジャンプ格闘⇒拡散ビーム⇒バズーカ⇒ジャンプ格闘⇒拡散ビーム⇒格闘 は繋がりますか?
>>752 実装環境の有無は知らんが、DOM仕様的には
DOMImplementationLS.createLSSerializer().writeToString(node);
(詳細を知りたければ DOM3 Load and Save 参照)
>>771 バズーカ処理がブラウザ依存なので、ライブドア版Operaだと処理が追いつかなくて落ちます。
flashでGIMを使ったほうがいいんじゃないですかね。
質問する前にコードの断片が分かってればそれでスレ検索すればよいのだが 例えばlocation.hrefを使うことだけでも分かってればそれでレス抽出するとか テンプレに入れてくんねーかな
776 :
Name_Not_Found :04/07/26 02:22 ID:3oqLzMpF
alertについていまいちよくわからないんですが、関数呼びだしの際に使用する、 エラー例外処理のようなものなんですか?
>>776 俺は、長ったらしい説明文を読みたい人だけに読ませる手段にしてる。
正しい使い方とかに拘ってるなら
>>3-4 あたりか。
>>776 例外処理ではないが、デバッグの時の出力には使える。
そもそも正しい使い方なんてあるのか
>>776-778 alert()は名前通り「警告ダイアログ」つまり「こういうことが
ありますからアブナイですよ、わかりましたねOK?」という表示
を出してOKボタンを押すまで先に進まないで止まって待つ、と
いうのが機能であり正しい使い方。でもたいていはデバッグとか
に流用してるよね。例外処理とはナンの関係もない、なんで例外
処理だなんて思うんだ?
北陸地方の農家を救済します。冷害処理
alertを「本来の機能」の用途で使ったことないし、そんな必要性も感じたことない。 それに、「アブナイですよ、わかりましたね?」って尋ねるなら、YesかNoを選択させるべきで、 alertのすることではない気がする。そもそもそんなアブナイことするな、とも言えるが。
ツリー型メニューをJavascriptでやろうとしていて 検索でいくつかサンプルを見つけたのですが 一つのツリーを展開したら他の開いているツリーは閉じるように してあるサンプルは見つかりませんでした。 <script Language="JavaScript"><!-- trList = ["treeMenu1","treeMenu2","treeMenu3"]; function exMenu(tName) { for (i=0; i<trList.length; i++) eval(trList[i]).style.display = "none"; tMenu = eval(tName).style; if (tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none"; } // --></script> <a href="javaScript:exMenu('treeMenu1')">ツリーの項目</a> <div id="treeMenu1" style="display:none">ツリーの中身<div> で一つ開くと別のは閉じるんですが そうすると今度はツリーの項目をもう一回クリックしても閉じません。 どう書き換えたら開くと別のツリーが閉じ、ツリー全部閉じるようにもできるでしょう。
>>781 その通り、だからalert()なんて本来の用途ではめったに
使うわけがない。どっちかというとconfirm()の方が普通
に使うよね。
>>782 アルゴリズムの問題だろ。今開いてるメニューがどれかを
記録しておいて、クリックしたときに今開いているのを
クリックした場合はそれを閉じ、そうじゃない時は既に
開いているものを閉じてクリックしたのを開くと。その
筋道に沿ってコードが書けなければ勉強するべきなんで、
誰かが書いてくれるなんて思わない方がいいよ。
質問です。 s1 と s2 と s3 といった名前の変数があり、 変数iを使用し ['s'+i] の形で変数にアクセスすることはできますか? 普通なら配列で作るべきなのでしょうが…。
>>785 [ ] ←これは何?
いずれにしてもやってみればわかるだろうに
787 :
785 :04/07/26 13:13 ID:???
>>786 >>11 のQ7のイメージなんです。
>>785 の3行目は例えでした。失礼しました。
HTML上に配置されているオブジェクトはobj['s'+i]の形でアクセスできますが、
変数でも同じようなことはできますか?というい質問です。
var s1 = 5;
var i = 1;
alert(['s'+i]); // 5 と表示されて欲しい。
788 :
785 :04/07/26 13:19 ID:???
自己解決。 evalでできました。 var s1 = 5; var i = 1; alert(eval('s'+i));
>>788 何やりたいのか分からないけど、
ずいぶんトリッキーだね。
790 :
782 :04/07/26 13:38 ID:???
すみません782です。 trList = ["treeMenu1","treeMenu2","treeMenu3"];// ツリーメニューのリスト function exMenu(tName) { for (i=0; i<trList.length; i++) eval(trList[i]).style.display = "none" →treeMenu1から順に全部のtreeMenuのstyleのdisplay要素にnoneを指定して一旦見えなくする。 tMenu = eval(tName).style; if (tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none"; →tMenuが見えない状態なら見える状態に、そうでなければ見えない状態にする。 } // --></script> <a href="javaScript:exMenu('treeMenu1')">メニューの項目</a> <div id="treeMenu1" style="display:none">メニューの中身</div> リンクをクリックすると必ず最初にdisplay:noneの状態になってからif以降が実行されて メニューの中身が表示されるから、そこはクリックすれば必ず表示状態なわけですよね。 考え方としては最初の処理を無くして別の方法で他の部分が非表示になるようにすればいいんでしょうか? 例えばクリックした時にif構文を実行してから、その後それ以外のtMenuを全部非表示にするとか。 あとeval()の意味が説明を読んでも理解できません。 ◆ object.eval(string) (e4/N3) string を JavaScript コードと見なして実行します。JavaScript 1.4 では削除されました。代わりに eval() を用います。 ◆ eval(statements) (e3/N2) statements を JavaScript の構文と解釈して実行し、その結果を返します。 この場合どういう風に使われているんでしょう。
>>790 そのサンプルのコードなんですけどね。
サンプルになっていないみたいですよ。なーんか試作品の試作品を
サンプルにしてしまっているように見える。
自力でその伸縮するツリーメニュー(?)のコードとやらを書いてみて
はいかがでしょうか。実力以上のものを持ち上げるのは大変でしょ。
ちなみにevalは、実行時に式を評価するときに使います。
で、そのサンプルでevalを使っている個所はなんかヘンです。
sytleオブジェクトを配列に入れておくとか、オブジェクトの参照を
うまく使えばevalは不要だと思うんですけど。
そんなムダがあるのも、このサンプルが未熟に見える理由です。
>>791 おそらくスクリプト評価時点ではまだ treeMenu1〜3 が存在しないんだろうねぇ。
フレーム(header、main、futtoer)を使ってるページで、mainからフォーカスが 外れたら強制的にmainにフォーカスを戻したいのですが、どのようにすれば良い でしょうか。 フレームmainに下記を記述してもonblurすら取得できていないようです。 window.parent.main.onblur = window.parent.main.focus(); 環境はNN6〜になります。 宜しくお願いします。
794 :
Name_Not_Found :04/07/26 15:17 ID:4j33FUMG
JavaScript basic samples
http://www.sumnet.ne.jp/domp/jsbs/ にあった「履歴に残さず移動」ですが
ちょっと改造したらエラーが出る様になってしまいました
しかも履歴が残ってしまいます、
function pageReplace(){
����window.location.replace("hoge.htm");
}
<body onLoad="pageReplace()">
のカタチですが、
エラー時のアラートは
「エラー:このオブジェクトではサポートされていない操作です」
です。
<body>に書いているのがいけないのでしょうか?
>>782 はこういうことがしたかったのか?ちなみに全角スペースを半角
に置換しないとエラーになるので注意。
<html>
<head>
<script>
var treeMenu = new Array() ;
function exec( src ) {
var o ;
o = treeMenu[ src ] ;
if ( o.style.display == "block" ) {
o.style.display = "none" ;
}
else {
o.style.display = "block" ;
}
for( var prop in treeMenu ) {
if ( prop != src ) {
o = treeMenu[ prop ] ;
o.style.display = "none" ;
}
}
}
796 :
795 :04/07/26 15:22 ID:???
function init() { var o ; for ( var i = 0 ; i < 3 ; i ++ ) { o = document.getElementById( "treeMenu" + i ) ; treeMenu.push( o ) ; o.style.display = "none" ; } } </script> </head> <body onload="init()"> <div><a href="javascript:exec(0)">[ MENU1 ]</a></div> <div id="treeMenu0">-1-</div> <div><a href="javascript:exec(1)">[ MENU2 ]</a></div> <div id="treeMenu1">-2-</div> <div><a href="javascript:exec(2)">[ MENU3 ]</a></div> <div id="treeMenu2">-3-</div> </body> </html>
797 :
782 :04/07/26 15:40 ID:???
>>791 >ちなみにevalは、実行時に式を評価するときに使います。
>で、そのサンプルでevalを使っている個所はなんかヘンです。
実行時に式を評価、ですか。うーんよくわからない・・・orz
styleオブジェクトを配列に入れてしまうってのは
var a = newArray(style.display = "none",style.display = "brock")
ってことでしょうか・・・。
考え方としてはツリー1の項目をクリックした時に
「もしツリー1が非表示なら表示し、それ以外のツリーは全て非表示にする。
ツリー1が表示なら非表示にし、それ以外のツリーも全て非表示にする。」
という式が実行されるようにすれば可能なわけですよね。
<script Language="JavaScript"><!--
function exMenu(tName)
{
tMenu = document.all[tName].style;
if (tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none";
}
// --></script>
<a href="javaScript:exMenu('treeMenu1')">メニュー1の項目</a>
<div id="treeMenu1" style="display:none">メニュー1の中身</div>
<a href="javaScript:exMenu('treeMenu2')">メニュー2の項目</a>
<div id="treeMenu2" style="display:none">メニュー2の中身</div>
として、これだけだとただ表示非表示がクリックで切り替わるだけなので、
if文の中か後(?)に引数(tName)以外の全てのidを非表示にする式を書き加えればいいのかな。
それ以外の全てというのをのをどうやって指定したらいいでしょうか。
>>795 やってみましたがスクリプトエラーが出て動作しませんでした。
799 :
Name_Not_Found :04/07/26 15:49 ID:Gbph2fFY
今日の18時までに1000行ったら、 妹(15歳・山田優似)のマソコ付ヌード写真ウプする。
800 :
799 :04/07/26 15:49 ID:???
激しく誤爆スマソ
801 :
798 :04/07/26 15:55 ID:???
>>798 スマソ。
試してみたら(IE6では)onload中にwindow.location.replace()
できるみたい。
802 :
Name_Not_Found :04/07/26 16:25 ID:UXF2KO1q
質問です。 別ページで開いたウインドウを別ページで閉じることは 出来るのでしょうか? 例えば ページ1 ・・ 子画面を立ち上げる ↓処理 ページ2 ・・ ページ1で立ち上げた子画面を閉じる わかる方はご教授ください。 よろしくお願いします。
803 :
793 :04/07/26 16:26 ID:???
すみません、半分自己解決ししました。 hedar,footerフレームのBODYにonfocusイベントで parent.main.focus(); でできました。 タブで送ったときは動作しないですが...
>>802 別に何だって閉じられるけど「閉じていいですか」ダイアログは
出るかもしれないね。
>>794 ホントにそこから出るエラーなの?別のところを壊してない?
どうしてもそこでエラーになるのなら
setTimeout(function() { location.href.replace('行き先'); }, 100);
>>785-789 evalを使うのはダサイ。「window['s'+i]」でいいんでしょ。
>>790-791 あんたらはアホか?そこはeval()なんて使わずdocument.getElementById()を
普通に書けばいいとこだろ。元のサンプルがひどいにしても、何読んでるんだ?
>>806 >>790 のレベルに合わせてあげてくれ。
「普通に書く」が分からなくて苦労してるんだよw
>>806 じゃあ
<script Language="JavaScript"><!--
function treeMenu(id){
if(document.getElementById){
if(document.getElementById(id).style.display == "none")
document.getElementById(id).style.display = "block";
else
document.getElementById(id).style.display = "none";
}
}
// --></script>
<a href="javaScript:treeMenu('id01')">メニュー1の項目</a>
<div id="id01" style="display:none">メニュー1の中身</div>
<a href="javaScript:exMenu('id02')">メニュー2の項目</a>
<div id="id02" style="display:none">メニュー2の中身</div>
でどうでしょうか。それで例えばidが01〜10まであったとして
5を開いたら1〜4と5〜10が閉まるようにしたいわけなんですが、
それをどうやって指定するのかわからなくて困ってるんです・・・。
>>808 var DivElements = document.getElementsByTagName("div");
for (var i = 0; DivElements.length; i++) {
if (DivElements[i].id == id)
DivElements[i].style.display = "block";
else
DivElements[i].style.display = "none";
}
とか。例えばだけど。
810 :
809 :04/07/26 18:39 ID:???
すんません 誤: for (var i = 0; DivElements.length; i++) { 正: for (var i = 0; i < DivElements.length; i++) {
>>808 全部閉じてから開きたいやつを開けばいいじゃねぇかよ
>>809 早速やってみます。
>>811 だから先に全部閉じたら
>>790 と同じで
もう一回クリックした時に閉じるってならなくなると思うんですけど。
アホだ・・・
コードを書く以前にアルゴリズムを考えられないわけか
Language="JavaScript"
>>808 <script Language="JavaScript"><!--
var DivElements = document.getElementsByTagName("div");
function exMenu(id){
for (var i = 0; i < DivElements.length; i++) {
if (DivElements[i].id == id)
DivElements[i].style.display = "block";
else
DivElements[i].style.display = "none";
}
// --></script>
で全部出来ました。ありがとうございます。
>>813 気になるんで説明してくれませんか。
先に全部閉じるっていうのがクリックしたら一旦全て非表示にして
その後クリックした部分の表示を切り替えるって意味じゃないなら
どういう意味なんですか。
>>816 >>813 じゃないけど、単に全部閉じてから表示させるのは良いとして、
その開く時点で、開くのか閉じるのか、どちらの動作かを判断させ、
閉じたい場合は開く処理をスキップするとかそういうのはダメなの?
もうほっとけ。 疲れるだけだから。
819 :
785 :04/07/26 19:18 ID:???
>>805 >evalを使うのはダサイ。「window['s'+i]」でいいんでしょ
それです!そんなのを探してたんです。
本当にありがとうございます。
説明できないだけだろw
821 :
Name_Not_Found :04/07/26 19:50 ID:2JNPG1Pn
>>817 作ってみました。
<script Language="JavaScript"><!--
var DivElements = document.getElementsByTagName("div");
function exMenu(id){
switch(document.getElementById(id).style.display){
case "none":
for (var i = 0; i < DivElements.length; i++) DivElements[i].style.display = "none";
if(document.getElementById(id).style.display == "none")
document.getElementById(id).style.display = "block";
else document.getElementById(id).style.display = "none";
break;
case "block":
if(document.getElementById(id).style.display == "none")
document.getElementById(id).style.display = "block";
else document.getElementById(id).style.display = "none";
break;
}
}
//--></script>
0から組んで一応上手く動いたので間違ってはいないと思いますが。
でも809さんのやり方のほうが全然スマートですね。
と思ったら816は出来てなかった・・・。821が正解か。
こんなのは状態を別途持っとく方がずっと楽。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title><style type="text/css"> div { background-color: yellow; width: 80px; height: 40px; position: absolute } #d0 { top: 40px; left: 40px } #m0 { top: 80px; left: 40px; display: none } #d1 { top: 40px; left: 120px } #m1 { top: 80px; left: 120px; display: none } #d2 { top: 40px; left: 200px } #m2 { top: 80px; left: 200px; display: none } </style><script type="text/javascript"> var status = [false, false, false]; function sel(n) { if(status[n]) { document.getElementById('m'+n).style.display = 'none'; status[n] = false; } else { for(var i = 0; i < 3; ++i) document.getElementById('m'+i).style.display = (status[i] = (i==n))? 'block' : 'none'; } } </script></head><body> <div id="d0" onclick="sel(0)">0</div><div id="d1" onclick="sel(1)">1</div> <div id="d2" onclick="sel(2)">2</div><div id="m0" onclick="sel(0)">0</div> <div id="m1" onclick="sel(1)">1</div><div id="m2" onclick="sel(2)">2</div> </body></html>
もう
>>782 のお付き合いはやめちゃっていいんじゃないの?
1. HTMLのオブジェクトを取得するには、document.getElementById()をつかう
2. 各々のメニューの状態は配列で管理する
3. evalは使わなくてもできる
これだけのヒントが出ているんだから、あとは自力でできないと
どーしようも(ry
>>822 自分で解を作れたならスレ的にも本懐。アホが一人いるみたいだが気にするな。初心者ですとか他人任せとかしない限り無問題。
event.button以外にマウスボタンの値を取得する方法はないでしょうか。 buttonプロパティだとonmousedownとmousemoveイベント位でしか取得出来ないので…。
CASEの中にIFって結構荒業っていうか強引でない? まぁ俺には配列で状態を管理とかわけわかめなんで何も言えんけど。。
>>826 そもそもMacとかマウスボタンが1つしかない環境もあるけど…
それにmousedownとmousemove以外ってマウスボタン押してない
から情報もないってことじゃないの?
なんかやけに伸びてるな
830 :
Name_Not_Found :04/07/26 21:37 ID:rjoz5eIR
HTMLのLINK要素で参照しているCSSファイル中でimportされているCSSファイルの パスを取り出したいのですが、何か上手い方法はありますか? 何がしたいのかというと、あるHTMLで使用されている全てのCSSファイルのパスを 知りたいというわけです。
>>830 まずはDOM CSSでルールの中からimport探してそのhrefを参照
とかいう普通のことをやってみては?
>>830 IEだと普通のDOM2CSSは使えないので
document.styleSheets[n].imports[m] を参照することになる。
833 :
Name_Not_Found :04/07/26 22:20 ID:rjoz5eIR
>>831-832 おおありがとうございます。mozillaでCSSImportRuleさがすという方法で
なんとかできました。
しかしIEの方が楽そうですね。
クマクマ
width = p2.getX() - p1.getX(); height = p1.getY() - p2.getY(); String style, textstyle; if ( scale <= 15000) { style = "fill:#FF0000;fill-opacity:0.15;stroke:#FF0000;stroke-width:0.8"; textstyle = "fill:#FF0000;font-size:80;fill-opacity:0.4"; } else { style = "fill:#0000FF;fill-opacity:0.15;stroke:#0000FF;stroke-width:0.8"; textstyle = "fill:#0000FF;font-size:80;fill-opacity:0.4"; } fill-opacity:0.4とは、何を示す言葉なんですか?
ぐぐれ。
837 :
835 :04/07/27 13:43 ID:???
>>836 ぐぐりましたが、説明と思われるところはありませんでしたので教えてください。
ソレSVG関係だよね。opacity=透明度。つまり半透明な色で塗りつぶす とこどで、その透明度を指定している。
てか
>>835 の冒頭4行ぐらいが禿しくJavaScirptじゃなさげなんだが。
841 :
835 :04/07/27 15:15 ID:???
>>838-840 ありがとうございました。
>>840 お察しのとおり、これは元々JAVAのプログラムの一部ですが、JAVAスレでスクリプトだと言われてこちらに来ました。
>>841 その言われたところに次のを貼っといて。
「バカヤローJavaとJavaScriptの区別もつかんくせに知ったかな
誘導するんじゃねーよ!! (JavaScriptスレ住人一同)」
Javascriptを利用して、HTML中にある「<!--コメント-->」 という文字列の、「コメント」という部分だけを抽出して表示するようなことは可能でしょうか?
>>843 こういう感じ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
var a = document.body.innerHTML.replace(/\n/g, '').split(/<!--/);
a.shift();
for(var i in a) a[i] = a[i].replace(/-->.*$/, '');
alert(a.join('|'));
}
</script>
</head><body>
<div><!-- コメント -->普通のテキスト</div>
<div><!-- コメント -->普通のテキスト</div>
<div><!-- コメント -->普通のテキスト</div>
<p><a href="javascript: test()">test</a></p>
</body></html>
>>843 CommentNodeからnodeValueを取得するのが一応の正攻法。
JavaScriptってhtmlに埋め込むのと、外部ファイルに作るのってどっちがいいの?
>>845 なるほど。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function extract(n, a) {
if(n.nodeType == 8) a.push(n.nodeValue);
for(var i = 0; i < n.childNodes.length; ++i) extract(n.childNodes[i], a);
}
function test() { var a = new Array; extract(document, a); alert(a.join('|')); }
</script>
</head><body>
<div><!-- コメント -->普通のテキスト</div>
<div><!-- コメント -->普通のテキスト</div>
<div><!-- コメント -->普通のテキスト</div>
<p><a href="javascript: test()">test</a></p>
</body></html>
イベントハンドラは--<script type="text/javascript"><!-- //></script>--を記載しなくても良いんだよね?
>>849 HTML中に書くハンドラでは書きようがないだろ。
<body onload="...">
JavaScript中でハンドラを設定する場合…
window.onload = funciton() { ... };
やっぱり書きようがないだろ。どういう場合のことを言ってる?
そもそも自分はJavaScriptソースをコメントで囲むことはとっくに
やめてる。対応しないクライアントは捨ててる。(JavaScriptが動作
しないのはそれはそれでいいけど。)
>>850 window.document.onkeydownとか…関数の宣言と一緒に実行してしまう時には
囲むかも知れんね。<body>タグだと、範囲指定が上手くいかないときとか。
いやまあ、基本的にないわな。
>>851 理解できん。「宣言と一緒に実行」の例を書いてみせてよ。
質問です。ある要素の、CSS で指定された属性(色、装飾など)を JavaScript から読み出すことはできないでしょうか? やりたいことは、リンクを複数並べて、最後にクリックしたものだけが他の リンクと色が違うようにしたいのです。 どなたか、お願いいたします。
>>853 <a href="#" style="color:red" onclick="alert(this.style.color)">リンク</a>
みたいなこと聞いてる?
>>854 この現スレで2回も「その方法ではCSS側で指定した色は読み出せない」
という話が出ていて読み出す方法も説明されているんだが。おまけに
質問者の意図からしたら役に立たないよな。
>>853 CSSで指定したものを読み出すのは面倒なわりに「最後にクリックした
もの」とほとんど関係ないだろ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<style type="text/css">
a, a:visited, a:active { color:brown }
</style>
<script type="text/javascript">
var last = null;
function chg(e) {
if(last != null) last.style.color = 'brown';
last = e; e.style.color = 'green';
}
</script>
</head><body>
<p><a href="
http://www.yahoo.com " target="t" onclick="chg(this)">yahoo<a></p>
<p><a href="
http://www.google.com " target="t" onclick="chg(this)">google<a></p>
<p><a href="
http://www.goo.ne.jp " target="t" onclick="chg(this)">goo<a></p>
</body></html>
>>855 「ある要素の、CSS で指定された属性」ってだけじゃ
style要素による指定かstyle属性による指定か解らんから
メンド臭くない方を例示して聞いただけだが。
java scriptを外部から読み出したいんだけど、この際、複数の命令を1つの外部ファイルに まとめてもいいの?
意味わからん
>>857 命令ってのは関数のことだと思うけど
いいよ。
>>835 VBScript?
まぁ、どうでもいいけど。
861 :
853 :04/07/28 13:05 ID:???
862 :
857 :04/07/28 14:48 ID:???
ありがとうございます。 ちなみに、外部ファイルはひとつのHTMLに何個まで読み込めるんですか?
>>862 制限なんかないけどね。あまり多くすると遅くなるだろうけど100個
とかならまあ問題ないよ。
864 :
857 :04/07/28 15:14 ID:???
そうなんですか、先ほど外部ファイルを2つほど作成し、1つのHTMLファイルで 2つ.jsファイルを読み込ませようとしたところ、どうしてもどちらか1つしか読み込んでくれず、 現在も悪戦苦闘しております。
>>864 同じ関数名でもあるんじゃないかなと思ったりした
866 :
857 :04/07/28 15:27 ID:???
いま確認したところ特に同じものはありませんでした。 ちなみに、1つの外部ファイルに複数の処理を書いて試したんですが、一番最初に 書いた処理しか、実行してくれません。
できることができないのはどこか間違ってるからだろ。 全部晒すか自分で間違いを探せ。
868 :
857 :04/07/28 15:43 ID:???
全部載せると大変になるので、問題があると思われる。複数の処理のつなぎ目を載せます。 for (i=1; i < n; i++){ y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed); x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed); } ClockAndAssign(); setTimeout('Delay()',20); } if (ns||ie)window.onload=Delay; /*-------別のスクリプト-------------*/ var TC = 0; var Msg = "ようこそ!お料理のページへ"; var timer = 0; function Mess() { if (TC < 1000) { TC++; document.title = Msg; Msg = Msg.substring(2,Msg.length) + Msg.substring(0,2); var timeID=setTimeout("",1); clearTimeout(timeID); timeID=timer = setTimeout("Mess()",500); } else { document.title = " " } }
>>868 そんな断片じゃ何とも言えないだろ。まず前半は「{」と「}」の
数が合わないしClockAndAssign()もDelay()も関数定義がないし。
後半はなぜ空文字列でsetTimeout()呼ぶのか分からんし即clearTimeout()
してるのもわからんしtimeIDがローカル変数なのもわけわからんし、
要はアンタがプログラミング下手すぎて失敗してるとしか思われん。
下のようなサンプルで「2つとも読み込めていること」「片方の中から
他方で定義した関数を呼べていること」が確認できるが何か?
---main.html---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript" src="t1.js"></script>
<script type="text/javascript" src="t2.js"></script>
</p><a href="javascript: test1()">test</a></p>
</body></html>
---t1.js---
alert('t1.js reading.');
function test1() { alert('Test1'); test2(); }
---t2.js---
alert('t2.js reading.');
function test2() { alert('Test2'); }
870 :
857 :04/07/28 16:04 ID:???
個別では実行できています。 上のに関しては、if (ns||ie)window.onload=Delay;の後ろに”}”を付けると逆に実行されなくなります。
>>870 どっかにアップロードしてURIを晒せ。しかしどっちかというと
あんなボロボロなコードを大量に見たくはないけどね。まあ別に
見ようと見まいとこっちの勝手で怖いもの見たさもあるけどね。
872 :
857 :04/07/28 16:08 ID:???
ちなみこのコードは私が書いたものではなく、サンプルをお借りして複数実行しようと しただけです。
873 :
853 :04/07/28 16:09 ID:???
javascript:var a=""; for(var i in document.getElementsByTagName("a")[0].style){a+=i +"<br>";}; document.write(a);undefined; javascript:alert(document.getElementsByTagName("A")[0].style.visitedcolor); すみません、先ほどの者ですが、あるリンクにフォーカスがあっても 周囲に点線が出ないようにするのは、JavaScript ではどう指定したら 良いでしょうか? CSS なら a:aciteve {border-style:none} あたりでうまく行きそうですが、JavaScriptで個別の要素に設定する方法が 分からないのです。 具体的には、一度クリックしたリンクは、他のリンクがクリックされるまで 点線が表示されないようにしたいのです。 よろしくお願いします。
874 :
853 :04/07/28 16:10 ID:???
すみません、
>>873 の冒頭のコードは意味がありません。ただのゴミで、範囲
選択のミスによるものです。
>>873 考え方としては、onfucus の時に blur() してあげる、という方向で。
要素に onfocus="this.blur();" と書いてもいいし、
DOM にアクセスしてオブジェクトを取得して、
obj.onfocus = function(){ this.blur(); }
とするのも可。
ただし、マウス無しではそのアンカーなりを叩けなくなる諸刃の剣。
初心者には以下略
>>872 だったらなおさら、「食べ合わせ」が悪いかなんかだろ。
アップロードして動かない状況が再現してれば誰かが究明
してくれると思うけどね。それなしでグダグダ言っても
どうにもならんね。漏れは用事があるから出かける、さいなら。
877 :
853 :04/07/28 16:30 ID:???
>>875 ありがとうございます。実は、最後にクリックしたリンクだけを無効に
して、地の文と変わらなくしたいのです。これらのリンクは、フレームの
左メニューです。
obj.onfocus = function(){ this.blur(); }
としましたが、リンクをクリックした直後には、点線が消えてくれません。
一度別の場所に(TABキーなどで)フォーカスを移し、もう一度クリックすると
今度はちゃんと点線が非表示になるのですが。
obj.onfocus = function(){
this.blur();
document.getElementsByTagName("BODY")[0].focus();
}
などとしても同じでした。
これは IE6 でも Mozilla 1.7 (Sylera) でも同じでした。
クリックの直後も点線が表示されないようにできないでしょうか。
878 :
Name_Not_Found :04/07/28 16:46 ID:6u3kfU39
<html> <head> <script type="text/javascript"> function test() { document.getElementById('check01').checked = true; document.getElementById('check02').checked = false; document.getElementById('flag').checked = true; } </script> </head> <body onLoad="test()"> <form name="test01"> <input type="checkbox" name="check01">check01<br> <input type="checkbox" name="check02" checked>check02<br> <input type="radio" name="flag" value="0" checked>0 <input type="radio" name="flag" value="1">1 </form> </body> </html> このような時、フラグのvalue==1の方だけをchecked にする方法が良くわかりません。 実際はforでグリグリ回しながらgetElementById('check0'+i)のように状況に応じて一気に変更 したいとおもっています。 よろしくお願いします。
ページ(1):ページ(2)へのリンクで、クッキーに画像のパスを保存 ページ(2):クッキーからパスを呼び出し、imgタグに埋め込んで画像表示 というようにしたいのですが、どのようにしたらよいでしょうか。 わからないなりに数日間色々してみて、クッキーの書き込みまでは上手くいったのですが クッキ−読み込み→imgタグに埋め込んで表示 がサッパリできません。 ●ページ(2) <html><head> <script language="javascript" src="../js/cookie.js"></script> </head> <body> <script language="JavaScript"> document.writeln('<img src="img(画像用のフォルダ)/'+name+'" width="10" height="10" alt="'+name+'">'); </script> </body></html> ●外部JavaScriptファイル(cookie.js) name=loadCookie() function loadCookie(){ tmp = document.cookie+";"; tmp1 = tmp.indexOf("cookie_name",0); if(tmp1 != -1){ tmp = tmp.substring(tmp1,tmp.length); start = tmp.indexOf("=",0); end = tmp.indexOf(";",start); return(unescape(tmp.substring(start+1,end))); } return(""); } おそらくとんでもなく簡単なんだろうとは思うのですが… 初歩的で申し訳ありませんが、どうかよろしくお願いします。
880 :
875 :
04/07/28 17:23 ID:??? >>877 どうか。
<script type="text/javascript">
window.onload = function(){
var tmp = document.getElementsByTagName("a");
for(var i=0 ; i<tmp.length ; i++){
tmp[i].onfocus = function(){ this.blur(); }
}
}
</script>
<ul>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
<li><a href="#">ふんにゃか ふんにゃか</a></li>
</ul>