元スレ+ JavaScript & jQuery 質問用スレッド vol.5 +
JavaScript覧 / PC版 /みんなの評価 :
701 = :
>>700
速くなるが一般的に人間が体感できない程度しか速くはならない。
だから同じ速度を気にするならば、開発 "速度" の方を優先する方が賢い
何万回もループを回すような処理だと体感できる差が出ることもあるが
その場合はその部分だけを最適化すれば良い。
まずはベンチマークを行って、"実際のユースケース" で何秒の差が生まれるかを計測するべき。
よく何万回もループを回してそれぞれ5秒と10秒かかって2倍も速くなったと言うやつが居るが、
実際には1回しか実行しない処理で0.5ミリ秒しか違いがでないならやる価値がないわけで。
702 = :
>>700
こういう質問をしてくる人にjQueryより効率のいいコードを簡単にかけるとは思えない・・・
703 = :
本当に速度を気にしているならば自分で調べるわけで、
「些細な速度でも気にしている俺すごい」って考えてるだけなんだろうな。
704 = :
>>700
自分でコード書いてプロファイルすればわかるでしょ
どんなコードかもわからないのに比較なんてできないこと
705 = :
速さを求めてjqueryを使っていない有名サイトは有りますか?
706 = :
>>705
ゲームぐらいだろうねw
707 = :
あ、ゲームサイトじゃなくて
ブラウザで動くゲームって意味
708 = :
すみません、初歩的な質問ですが困り果てています。
どなたかご教授下さい。
アコーディオンの中にスライダーを入れたいのですが、
display:none;が悪戯をして上手く表示させることができません。
症状としてはアコーディオンを開くとスライダーが一切表示されず、
アコーディオンを開いたまま時間を置いたり、ブラウザを最小化→最大化すると表示されるようです。
アコーディオンは初期設定では全閉じです。
display:none;をはずして初期状態を全開にすればきちんと表示されます。
ただ全開だとアコーディオンの意味があまりないのでそれは避けたいです。
試しにと思ってcssからdisplay:none;をはずしてjavascriptに.css("display")=="none"というものを組み込んだのですが同様にだめでした。
何か上手い解決方法があればお教え下さい。
709 = :
>>708
http://www.youtube.com/watch?v=XMPHxIpPoUU
コレを参考にしたら?
711 = :
javascriptかjQueryなどで他のサイトのhtmlをデータとして
取得する方法があればヒントを教えて下さい。
712 = :
jQuery3.0で挙動が変わったんじゃなかったっけ?
713 = :
>>711
CORS, JSONP, Ajax, XMLHttpRequest, fetch
714 = :
>>711
jquery.xdomainajax.js
715 = :
>>713>>714
色々な情報ありがとうございました。
jquery.xdomainajax.jsが簡単そうだったのですが、例えば
www.yahoo.co.jpは取得できましたが、そのyahooを使った
検索結果は取得出来ませんでした。何か制限がありますか?
716 = :
>>715
yahooのサイト見たら「ログイン」って書いてあるところがあるでしょ?
そこyahooにログインしていたら、ログインしているユーザー名になるんだよ。
で、そのユーザー名を勝手に取得できたらだめでしょ?
だから、自分の管理外のサイトは情報を取れないようになってる。
これが同一生成元ポリシーっていう制限。
基本的にドメイン(サブドメイン含む)が違うと情報は取れないと考えていい。
ただしドメインが違っても自分が管理しているサイトであれば、
httpヘッダーを追加するなどして情報を取ることは可能。
717 = :
>>712
> jQuery3.0で挙動が変わったんじゃなかったっけ?
互換性が無くなることはないので
大きな挙動の変更はないよ。
718 = :
>>716
>基本的にドメイン(サブドメイン含む)が違うと情報は取れないと考えていい。
ブラウザからなら見れるのに
jsからデータが取れない理由が分かりません。
719 = :
>>718
セキュリティ、道義上の理由
720 = :
>>718
jsでデータ取れたら、取ったデータを別のサイトに
送信できるからだよ。
721 = :
フィッシング詐欺、コンテンツ無断利用
722 = :
>>718
クロスサイトスクリプティングを調べてみると良い
JSで何を取りたがっているか理解できると、同一生成元ポリシーの存在理由が理解できる
723 = :
これを使えばこう言う手口で悪さができるな
って言うのも考えないとダメ
だからその穴を防ごうというセキュリティ意識が付く
724 = :
>>711
スレを移動しても答えは変わらないよ
http://echo.2ch.net/test/read.cgi/tech/1463914293/422-
725 = :
>>718
>ブラウザからなら見れるのに
ユーザ(ブラウザのコード)からは見えるが、 js (サイトが用意したコード)からは「見えない」というのが重要
セキュリティとか普段考えたりしない一般人は、この二つの区別がつかなくとも無理はないだろう
726 = :
悪い手口も考えないとダメよ
ウイルスの作り方考えて、それを防ぐ方法を考える
自分が作ったシステムを破壊する方法を考える
めっちゃ大切
727 = :
>>726
21世紀少年でよんだ。
728 = :
>>724
それは俺じゃないよ。お前は俺711のストーカーか!
729 = :
>>728
そんなレスをする前に回答してくれた人にレスしたら?
他人のサイトコンテンツを無断利用して楽しようとしか思えないけど
730 = :
>>728
巡回先で見かけただけで君一人の為にストーカーする程、暇じゃないよ
自分の被害(ストーカー疑惑)に敏感な反面、他人の被害(コンテンツ盗用)には鈍感なんだね
731 = :
こういう普通のテーブルが有る場合に、
<table>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
連続するカラムで同じ値が入っているのを見つけて、
<table>
<tr>
<td colspan="3">1</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
こんなふうにしたいのですが、jQueryか何かでうまくやる方法はありますか?
自分で思いつくのはfor loopで回して調べるくらいしか思いつきません。
732 = :
>>731
こんな感じかねぇ。
$('td').attr('colspan', function() {
return $(this).html() === $(this).prev().html() ? undefined : 1;
}).filter('[colspan]').attr('colspan', function() {
return $(this).nextUntil('[colspan]').length + 1;
}).end().remove(':not([colspan])');
連続するカラム=前のカラムと一緒 と考えて、
(1) 最初に前のカラムと違っていればとりあえずcolspan=1をつける。
(2) 次にcolspan=1した要素に対して、colspan属性がついている次の要素までの数でcolspanを更新する。
(3) 最後にcolspanがついていない要素を削除
これだけだと連続していない(=1個)の場合にcolspan=1が残るから消したいなら最後にこれを追加する。
.filter('[colspan="1"]').removeAttr('colspan')
ここまでくるとループにするかjQueryのeach()を使ったほうが分かりやすそうだ。
733 = :
ループでやった方がええんとちゃう?
734 = :
>>733
やっていいと思うよ。
いくつか軽く試してみたけど、>>732の倍ぐらい行数になる感じだね。
735 = :
ループでやった方が無駄がないと思う
けど、行数減らすことに命懸けてる人に関わると面倒になることは想像にかたくない
736 = :
>>735
行数に命をかけるというよりか、関数型に命をかけているって感じだけどね。
ループを使う手続き型的なコードに比べて、「定義」していくことで
コードを書くのでバグが少なくなる。
737 = :
>>732
天才ですか。
ありがとうございました。ちなみにJavaScript歴は何年くらいですか?
738 = :
>>737
趣味でやっていた期間も含めれば18年ぐらいになるんじゃないかな?
いまは職業プログラマ、もちろんJavaScriptだけをやっていたわけじゃなく、
JavaScript以前にはC言語やBasicなどの経験もあるし、最近はPythonやRubyなんかも使ってる。
ここまで来るともう期間聞いても意味ないよw
プログラミングの勉強というより、仕事をしていた期間だからね。
あと期間聞くならjQuery歴を聞いたほうがいいかな。
jQuery以前と後ではコーディングスタイルががらっと変わった。
jQueryは2009年の1.3ぐらいからかな?その後2012年には今ぐらいになってたので
4年ぐらいかけてだらだら身につけていった。
これは世間のノウハウも情報もない時代から、仕事しながら身についたものなので
十分な情報がある今勉強として本気でやったら数週間~数ヶ月もあれば十分だと思うよ。
739 = :
>>736
> ループを使う手続き型的なコードに比べて、「定義」していくことで
> コードを書くのでバグが少なくなる。
あなたにとってはそうなんだろうね
740 = :
>>739
せめて勉強はしよう。言い返すのはそれからだ
http://okapies.hateblo.jp/entry/2015/12/07/022915
関数型プログラミング (functional programming) の利点を説く際によく持ち出されるのが、
QuickCheck の開発者の一人である John Hughes が 1984 年に著した論文
"Why Functional Programming Matters" だ。「なぜ関数プログラミングは重要か」という
題名で日本語訳もされているので、読んだことがある人も多いと思う。
関数型プログラミングの「利点」:
関数型プログラムには副作用(≒代入文)がないのでバグが減らせる
参照透明なので実行順序を気にしなくてよく、式をどの時点で評価してもよいのでプログラムをより数学的に扱える
741 = :
>>740
そのバグはfor文の特性をプログラマが理解していない事によるもの
関数型プログラミングにするからバグが減るわけではない
743 = :
副作用(≒代入文)とやらがバグを生み出す原理を書いてない時点でダメ
744 = :
比較的よく見るfor文のコーディングミス
for (var i = 0; i < 5; ++i) {
document.getElementById('hoge' + i).addEventListener('click', function () { console.log(i); }, false);
}
でも、これは設計の問題だよなあ
5つも新しい関数オブジェクトを生成するのが全く無駄だし、一つだけハンドラ関数を作ってhandleEventでiを渡せば済む話
for-letでも解決するが、ここで使うものでもないし
746 = :
for文には問題ないから、for文の所を全く書き換えなくて直すことも出来る。
for (var i = 0; i < 5; ++i) {
(function(i) {
document.getElementById('hoge' + i).addEventListener('click', function () { console.log(i); }, false);
})(i);
}
747 = :
>>746
だから、関数オブジェクトを複数個生成するのが無駄だとあれほど…
for文棋院じゃないってのは同意だけど、プログラマの勉強不足がバグの原因だと思うよ
748 = :
>>732
この手法をrowspanにも応用出来ますか?
つまり縦方向で同じセルを結合する。
749 = :
>>747
お前が言いたいことを、jQueryで(冗長に)書くと
こういうことだろう?
function onclick(event){
console.log(event.data.i);
}
for (var i = 0; i < 5; ++i) {
$('#hoge' + i).on('click', {i: i}, onclick);
}
750 = :
>>740
横だが。
> 1984 年に著した論文
この時点でおかしいと気付けよ。
もしそんなに素晴らしいのなら、これまでlisp等が完全に放置されてきた説明が付かないだろ。
類似してるかもしれないスレッド
- + JavaScript & jQuery 質問用スレッド vol.8 + (1001) - [98%] - 2019/2/9 14:00
- + JavaScript & jQuery 質問用スレッド vol.7 + (701) - [98%] - 2022/12/19 17:15
- + JavaScript & jQuery 質問用スレッド vol.7 + (993) - [98%] - 2017/11/10 8:15
- + JavaScript & jQuery 質問用スレッド vol.6 + (980) - [98%] - 2016/11/20 14:31
- + JavaScript の質問用スレッド vol.95 + (1001) - [72%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.75 + (1001) - [72%] - 2010/1/23 1:07 ○
- + JavaScript の質問用スレッド vol.85 + (1001) - [72%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.135 + (1002) - [70%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.105 + (1001) - [70%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.125 + (1001) - [70%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.115 + (1001) - [70%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.93 + (1001) - [70%] - 2011/12/10 18:31
トップメニューへ / →のくす牧場書庫について