+ JavaScript の質問用スレッド vol.64 +

このエントリーをはてなブックマークに追加
952Name_Not_Found:2008/05/29(木) 00:47:08 ID:???
テストで40℃のお湯と60℃のお湯を同じ量混ぜたら100℃のお湯になるって答えたら×になったんだけど何で?
953Name_Not_Found:2008/05/29(木) 00:52:19 ID:???
40ccのお湯と60ccのお湯を同じ量…すでに量が違うじゃんかよ!
954Name_Not_Found:2008/05/29(木) 01:00:34 ID:???
はじめまして。

プルダウンから選択してフレーム内に表示させるものをつくりました。
そして、プルダウンが1つだけならちゃんと動作しましたが…
2つになるとなぜか飛びません。

http://home.netyou.jp/55/apica/frame.html

に見本をアップしておきます。
1つめのプルダウンだけならちゃんと右に結果が表示されるので…
どこかスクリプトのミスだと思うのですが。
Googleで「プルダウン フレーム 複数」で検索したのですが、
どこが悪いのかわかりませんでした。

ブラウザはIE7.0とFirefox2.0、OSはWinXPです。
お手数ですがよろしくお願いいたします。
955Name_Not_Found:2008/05/29(木) 01:14:12 ID:???
name="flink" が二つあるな
956Name_Not_Found:2008/05/29(木) 02:13:19 ID:???
テンプレ追加推奨
http://js-users.jp/
957954:2008/05/29(木) 03:02:44 ID:???
>>955さま
 あ、そういうことだったんですね。
 気がつかなくて???状態だったので助かりました。
 どうもありがとうございました。
958Name_Not_Found:2008/05/29(木) 03:05:36 ID:???
>>945のように暇潰しでJavaScriptをやっているなら良いかもしれないが、
今時フールプルーフを考慮しないサイト(に限らず各種サービス)は有り得ないね。
959Name_Not_Found:2008/05/29(木) 03:21:54 ID:???
だからなぜ eval = フールプルーフ無視 という短絡思考なのか、昔のJSがまだ尾を引いているのかな
扱い方さえ誤らなければ非常に有用で使いどころも少なくないのに
960Name_Not_Found:2008/05/29(木) 03:28:57 ID:???
さすが趣味の人は違うなあ
961Name_Not_Found:2008/05/29(木) 03:34:27 ID:???
マウスドラッグでの選択範囲について質問です。
文字列の選択した範囲を変更するコードを書いているのですが、
範囲を選択した後メニューをクリックすると選択範囲が解除されてしまします。
ForefoxとSafariでは解除されずに上手くいくのですが、IEで選択範囲を
そのまま固定する方法ってありませんか?
962Name_Not_Found:2008/05/29(木) 03:55:48 ID:???
え?
あれ?
日本語読めない人だった?
963Name_Not_Found:2008/05/29(木) 04:37:28 ID:???
>>961
メニューってのはメニューバーのメニュー?
それともコンテキストメニュー?Selectタグのプルダウンメニュー?
964961:2008/05/29(木) 05:04:45 ID:???
説明が足りませんでした。申し訳ない。
プルダウンメニューなのですが、Selectタグの物ではなく
HTMLエレメントで作ったプルダウンメニューです。
プルダウンさせる時のクリックで選択範囲が解除されてしまいます。
おとなしくSelectタグを使えって話なんですが。。
何かいい方法をご存知ないでしょうか。
965Name_Not_Found:2008/05/29(木) 05:11:40 ID:???
>>964
じゃぁ、プルダウンメニュークリック時に選択範囲を復活させるしかない気がしてる。
return falseとかでデフォルト動作を止める方法でもうまくいくかもしれない。
復活させる場合のコードだけ提供。以下がclickイベントハンドラ内での処理。
var sRng = document.selection.createRange();
setTimeout(function(){ sRng.select(); }, 1); //選択範囲を戻す。
966961:2008/05/29(木) 05:34:18 ID:???
選択範囲を復活させる方法でいけそうです。ありがとうございます。
967Name_Not_Found:2008/05/29(木) 08:14:04 ID:???
ここはeval()推奨派に「eval()があったらスマートにできる」
場面を挙げてもらって本当にそれが良い方法なのか検討しようぜ。
968Name_Not_Found:2008/05/29(木) 08:34:53 ID:???
JSON通信時に受信データをオブジェクトに変換するときにeval使う。
969Name_Not_Found:2008/05/29(木) 08:51:00 ID:???
>>967
JavaScriptでJavaScript実装はもちろん、Lispとかpythonを作る場合とか
IE4,5向けにFunction.prototype.apply作る場合とかで、eval使えるぞ。
970Name_Not_Found:2008/05/29(木) 08:58:27 ID:???
>>968
それは絶対やっちゃいけないと思うけどな。無知な人は
それ勧めているけど「セキュリティ上危険だからJSON.parse
などを通す」というのが常識化しつつあると思うよ。
>>969
そんなの実装してるとは言えない手抜きでしょ。普通に
構文解析して中間形式にしてから実行する方が安全だし高速。
そもそもふつーのWeb制作者は言語を実装なんかしないってば。
Web制作者が使うもっとふつーの用途っていうのはないの?
971Name_Not_Found:2008/05/29(木) 09:28:19 ID:???
この流れって「eval()でやるといいよ」回答しただけの回答者を何が
気に入らないのか糞味噌に罵倒したところから始まってるよね。
そのレヴェルでしょ。eval()に無知なヤシは宗教化しているだけ。
972Name_Not_Found:2008/05/29(木) 09:31:03 ID:???
俺としては、eval()でやるのって何か最終手段って感じがするわけで、できることならevalではない正当な方法で記述したいというだけなんだけどな。
973944:2008/05/29(木) 10:07:24 ID:???
僕の場合だけど、下のような感じでeval使ってます

前提は<a><img></a>となってて、
<a>のリンクのパラメータにURLエンコードが必要で、でもサーバ側はいじれない。
仕方なく href="javascript:〜" ってやってるのだけど、これだと、中クリックが効かない
なのでimgのonloadでaのhrefをevalで実行したものをhrefに入れ直してる。

「そもそもhref="javascript:〜"とかいつの時代だよ」って話もあるかもだけど、
URLエンコード付きパラメータ使うとなると仕方なくてそうしているのでそこは勘弁して
974Name_Not_Found:2008/05/29(木) 11:14:35 ID:???
というかevalの危険性なんて把握してるのが当たり前で、その上であえて使う場面も無いことはないのに
「eval」と聞いただけで鬼の首でも取ったかのように騒ぐ奴らが本当に面倒くさい。
975Name_Not_Found:2008/05/29(木) 12:00:57 ID:???
いや、どう見ても使わなくてもいいとこにevalとか言ってるんで
どうかなと思うだけで、 >>973 なんかはわりとなるほどと思った。
そういう点では >>972 に賛成の気分。とりあえずテンプレには
まだ入れないよね、これでもう975になるし…
976Name_Not_Found:2008/05/29(木) 12:51:51 ID:???
次スレ
http://pc11.2ch.net/test/read.cgi/hp/1212031089/l50
だけど、急に流れが遅くなったんでこのスレを消費してから移動してね。
977Name_Not_Found:2008/05/29(木) 13:16:25 ID:???
何と言うかevalに関しては両極端過ぎるね。
>>925の言うように"絶対に使わない方良い"ものでは決して無く、
必要とされる場面(それほど多くは無いが)で使えば有用な機能。

が、ユーザー入力のような任意の文字列にevalを使うなどは論外中の論外。
それをユーザーの自己責任だからいいんじゃね?派(>>945)や、
そもそもフールプルーフを知らない派(>>959)のようなアレな人間が擁護するから不要な混乱を招く。

>>976
978Name_Not_Found:2008/05/29(木) 13:41:12 ID:???
FAQの文案を直してみた。
Qx. eval()を使って入力文字列を数値に変換してはいけないのですか?
Ax. eval()をユーザ入力のような任意文字列に使用するのは危険です。
変換はparseFloat()やparseInt()で(真にevalが必要なケースはごく少数)。
979Name_Not_Found:2008/05/29(木) 13:46:25 ID:???
>>978
ま、マジで*ごく少数*なら、むしろ、これとこれ以外は使うな、と書いた
方が親切だね。つまりあっても一つか二つのケースってことでしょ。
980Name_Not_Found:2008/05/29(木) 14:00:37 ID:???
>>977
> ユーザーの自己責任だからいいんじゃね?派(>>945)
> フールプルーフを知らない派(>>959)

文盲お疲れ様です


>>978
その場合evalを引き合いに出す必要は無い罠
Qx. 文字列を数値に変換したいのですが
Ax. parseFloat('123.456')やparseInt('879')を使用します
981Name_Not_Found:2008/05/29(木) 14:01:23 ID:???
激しく既出と思いますがevalについて。
ttp://dev.opera.com/articles/view/efficient-javascript/?page=2#avoideval
↓(日本語訳)
ttp://www.hyuki.com/yukiwiki/wiki.cgi?EfficientJavaScript#i3

危険云々ももちろんありますが、単純に遅いってので私はあまり使いません。
特に古いブラウザやIE(7でかなり改善されたけど)は遅いので。
977さんが言ってるように、必要な場面のみ使うってのがいいんじゃないでしょうか。
絶対使わない!ってのは柔軟性に欠けますよね。
982Name_Not_Found:2008/05/29(木) 15:35:07 ID:???
983Name_Not_Found:2008/05/29(木) 15:56:11 ID:???
evalの議論秋田!
984Name_Not_Found:2008/05/29(木) 16:14:55 ID:???
Ajaxでも静岡?
985Name_Not_Found:2008/05/29(木) 17:56:54 ID:???
普通のJavaScriptの話し奈良いいよ
986Name_Not_Found:2008/05/29(木) 22:28:09 ID:???
>>978
何が危険なんだか。
987Name_Not_Found:2008/05/29(木) 22:56:54 ID:???
次スレ>>8に感動。Prototype.js とちゃんとCS意識が高い表記。
信頼性とか信憑性とかはこういう地道な細部に表れるものだね。
988Name_Not_Found:2008/05/29(木) 23:04:58 ID:???
989Name_Not_Found:2008/05/29(木) 23:48:33 ID:???
>>987
そのかわりjQueryのJが大文字になっている。
というかこのスレの>>12の時点で既に間違っていたけど。

しかし日本語でおkというより、酔っ払い乙と言いたくなるような文章だね。
990Name_Not_Found:2008/05/29(木) 23:48:58 ID:???
え・・?
991Name_Not_Found:2008/05/29(木) 23:49:56 ID:???
>>987
え・・?
992Name_Not_Found:2008/05/29(木) 23:55:51 ID:???
>>991
ん?・・
993987:2008/05/29(木) 23:59:03 ID:???
>>989
そっかぁ。だめだこりゃ。発言>>987全面撤回させて。
994Name_Not_Found:2008/05/30(金) 00:02:13 ID:???
感動とか撤回とか、あなたの感想なんて誰も聞いてません
心の中でやってください
995Name_Not_Found:2008/05/30(金) 06:43:22 ID:???
996Name_Not_Found:2008/05/30(金) 10:54:06 ID:???
ume
997Name_Not_Found:2008/05/30(金) 10:54:26 ID:???
ume
998Name_Not_Found:2008/05/30(金) 10:54:46 ID:???
ume
999Name_Not_Found:2008/05/30(金) 10:55:07 ID:???
ume
1000Name_Not_Found:2008/05/30(金) 10:55:27 ID:???
1000 なら JavaScript 最高!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。