のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,908人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ+ JavaScript & jQuery 質問用スレッド vol.5 +

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    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等が完全に放置されてきた説明が付かないだろ。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について