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

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    802 : Name_Not - 2011/02/19(土) 03:04:59 ID:??? (+22,+29,-4)
    C言語ってクラスあったっけ…?
    804 : Name_Not - 2011/02/19(土) 07:38:12 ID:l5LbRssE (+37,+30,-262)
    >>739
    1年も前だったかw
    次スレも近いんで、>>743の意見を反映してちょっとリライト

    【質問を書く上で】

    1)「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを
     簡潔に説明してください。ただ「動きません」ではわかりません。
     脳内おれおれ用語は混乱のもと。一般的な用語を使うようにしてください。

    2)調べたこと・試したことを書いてください。
     OS、ブラウザ、バージョンを必ず明記しましょう。
     質問箇所(行数、エラー内容)を簡潔に。
     何のエラーかわからなければ、エラーメセージをコピペ。
     各ブラウザのJSコンソールを活用しよう。

    3)質問は、あなたが思っているほどうまく説明できていないことが多いです!
     要点を整理してソースを貼ってください(エラーは再現できるように)。
     1レスで収まらない場合は、アップロードしてください。
     http://jsbin.com/ やhttp://jsdo.it/ なども活用してください。

    4)閲覧者の迷惑になる質問は回答されません。
     別窓を多数開く、閉じる・戻る・クリックを妨害、画面占有、など。
     「分かんねえの?」と煽っても無駄です。

    5)「初心者なので」「初心者だから」「初心者ですみません」とか
     書かない方が無難です。
     知らない、できない、わからない、まちがい、は誰にでもありますから。
    805 : Name_Not - 2011/02/19(土) 11:50:29 ID:??? (-1,+9,+0)
    >>803
    拡張してないじゃん
    807 : Name_Not - 2011/02/19(土) 14:20:46 ID:??? (+32,+29,-39)
    >>804
    よいんだけど、「そのまま貼って試せる、エラーが再現するソース」
    という言い方でどうかな。現状だと動かない断片を貼られてもめるとか
    心配じゃないですか?
    809 : Name_Not - 2011/02/19(土) 14:46:13 ID:??? (-26,-29,-60)
    3)うまく説明できない時は、ソースを貼ると回答されやすいです。
     要点を整理して、エラーが再現するソースを貼ってください。
     1レスで収まらない場合は、アップロードしてください。
     http://jsbin.com/ やhttp://jsdo.it/ なども活用してください。

    res739.replace(/(?=セージ)/, 'ッ')
    810 : Name_Not - 2011/02/19(土) 14:54:29 ID:??? (-29,-30,-139)
    function myArray() {
      var self = Array.apply(null, arguments);
      self.__proto__ = myArray.prototype;
      return self;
    }
    myArray.prototype = {
      constructor: myArray,
      last: function last() { return this[this.length - 1]; }
    };

    var a = new myArray(1, 2, 3);
    alert(a.last());
    812 : Name_Not - 2011/02/19(土) 15:08:34 ID:??? (-29,-30,-208)
    1コ忘れてた。

    function myArray() {
      var self = Array.apply(null, arguments);
      self.__proto__ = myArray.prototype;
      return self;
    }
    myArray.prototype = {
      __proto__: Array.prototype,
      constructor: myArray,
      last: function last() { return this[this.length - 1]; }
    };

    var a = new myArray(1, 2, 3);
    alert(a.last());
    alert(a.reverse());
    alert(a.last());
    815 : 745 - 2011/02/19(土) 15:32:18 ID:??? (+24,+29,-21)
    >>774>>775
    内間違いの箇所確認できました。失礼しました。

    用例参考にさせてもらいます。
    816 : Name_Not - 2011/02/19(土) 15:45:27 ID:??? (-9,-30,-20)
    >>801
    function MyArray(){}
    MyArray.prototype = new Array;
    820 : Name_Not - 2011/02/19(土) 16:48:30 ID:??? (+24,+26,-19)
    JavaScriptライブラリで継承できるようにしてるのあるから
    そのソース見てみればいいのでは?
    でもC言語ってことは継承の話でないのかな?
    821 : Name_Not - 2011/02/19(土) 17:39:56 ID:??? (-26,-29,-25)
    823 : 822 - 2011/02/19(土) 20:39:28.49 ID:FA12auiN (-20,+29,-25)
    書いた当時に人に聞いて教えてもらったのをもとにして
    そこに俺のへっぽこぶりが重なって、ちょっと変だなあ
    824 : Name_Not - 2011/02/19(土) 22:10:15.02 ID:pkszutki (+39,+29,-55)
    document.allの有無でIEとそれ以外を振り分けるやり方は
    フィーチャーディテクション以前の古いやり方ですか?
    今でもフィーチャーディテクションが使いにくい場合によく使われる手法ですか?
    825 : Name_Not - 2011/02/19(土) 22:26:09.28 ID:??? (+23,+27,+0)
    >>824
    今では使われない。
    826 : 824 - 2011/02/19(土) 22:27:19.55 ID:??? (-24,-22,+2)
    どうもありがとうございますm(_ _)m
    827 : Name_Not - 2011/02/19(土) 22:29:32.59 ID:??? (-27,-30,-48)
    document.all の判定は

    if (document.all) { ; } else { ; }



    if ('all' in document) { ; } else { ; }

    で全く違う。
    828 : Name_Not - 2011/02/19(土) 22:37:35.66 ID:??? (+30,+29,-72)
    JavaScript初心者です。
    オブジェクト指向で書くことを勉強中です。
    ロールオーバーのスクリプトをいろんなサイトや書籍を参考に書いてみました。

    http://jsdo.it/bla1/7qJx/read

    諸先輩方のご意見伺えると幸いです。
    よろしくお願いします。
    829 : Name_Not - 2011/02/19(土) 22:49:52.05 ID:??? (-22,-26,-42)
    >>819
    何がわからないのか分からない…。
    >>816はコンストラクタもそうだけど、そもそも配列じゃないから
    length の機能が抜けちゃってるし
    Object.getPrototypeOf は話題にかすってもいないじゃないか。
    830 : Perl忍者 ◆ - 2011/02/19(土) 23:12:33.20 ID:0Er2YwGM (+23,+23,-29)
    プログラミング言語にレベルってないの?

    ゲームみたいにあったらいいのに

    Perlレベル10までしかないし

    あれよりいいの考えようぜ Maxレベル75くらいね

    Perl忍者lvl50 みたいなかっこいい
    832 : Perl忍者lv - 2011/02/19(土) 23:23:09.01 ID:0Er2YwGM (+10,+29,-21)


    今日から、人の質問に答えるごとにlvl1ずつあがりますね

    経験値は2乗ずつになってくかんじです

    マゾい仕様です

    暴言をはくとカルマがさがりますね

    悪ってつきます

    いまはニュートラルです

    がんばります
    833 : Name_Not - 2011/02/19(土) 23:37:10.93 ID:??? (-15,-30,+0)
    >>828
    JSでロールオーバーの是非とか実装はともかく、普通はこうじゃないか


    function RolloverItem($elem) {
      this.$elem = $elem;
    };
    RolloverItem.prototype = {
      setEvent: function() {
        var that = this;
        this.$elem.bind('mouseover focus', function() {
          that.over();
        }).bind('mouseout blur', function() {
          that.off();
        });
      },
      over : function() {
        this.$elem.attr('src', this.$elem.attr('src').replace(state.off, state.on));
      },
      off : function() {
        this.$elem.attr('src', this.$elem.attr('src').replace(state.on, state.off));
      },
      preload : function() {
        $('<img>').attr('src', this.$elem.attr('src').replace(state.off, state.on));
      }
    };
    $('a img[src*="_off."]').each(function() {
      var ins = new RolloverItem($(this));
      ins.preload();
      ins.setEvent();
    });
    834 : Name_Not - 2011/02/19(土) 23:45:14.46 ID:??? (+27,+29,-64)
    >>833
    レスありがとうございます。
    はじめは示してもらったコードで書いていたのですが

    ーJavaScriptのnewって本当にいらない子?ー
    http://d.hatena.ne.jp/jdg/20090706/1246840565

    この辺の話も気になって変則的になってしまいました。
    thisを多用するのが何となく見た目がスマートじゃない感じがしたので
    このようにしました。

    機能的な面で違いがでますでしょうか?
    835 : 816 - 2011/02/20(日) 00:28:44.95 ID:??? (+24,+29,-3)
    >>829
    ありがとう。
    どうもいろいろと勘違いしていたようだ。勉強が必要だなー。
    836 : Name_Not - 2011/02/20(日) 09:02:14.50 ID:??? (+30,+29,-30)
    ちょっとすれ違いかもしれないですが、すいません。

    動的にDIV要素を作成して、画面上に出現させてるんですが、
    スクロールした際にその要素を画面上に固定させることできますか。

    スクロール量を足して移動するのではなくて、
    背景画像をfixedにしてるような感じの状態にしたいのです。
    837 : Name_Not - 2011/02/20(日) 09:39:37.26 ID:??? (-27,-29,-22)
    >>836
    CSSの機能にposition: fixedというのがあるから。ただし古いIEは非対応。
    838 : Name_Not - 2011/02/20(日) 09:52:45.14 ID:??? (-11,-5,+0)
    >>837
    できました。ありがとうございました!
    840 : Name_Not - 2011/02/20(日) 11:05:56.90 ID:??? (-5,+6,-5)
    開発の規模
    841 : Name_Not - 2011/02/20(日) 11:12:19.24 ID:??? (-29,-30,-49)
    >>834
    this がいらない代わりにメモリの無駄遣いになる。
    var ins = RolloverItem($(this)); でも動くと思うけど…。
    843 : Name_Not - 2011/02/20(日) 11:44:36.16 ID:??? (-26,-29,-41)
    F()の中でthisがglobal objectかどうか調べて
    global objectなら警告だけ出して何もしないとか
    どうだろうか。オブジェクトを作るところにnewが
    使われているというのはコードを読むという点からは
    好ましいことだと思う。
    845 : Name_Not - 2011/02/20(日) 11:49:04.59 ID:??? (-22,-30,+0)
    >>841
    ありがとうございます。
    オブジェクト指向というかコンストラクタからインスタンスをつくり、
    プロパティやメソッドを継承させる方法に悩んでいます。
    普通に
    var Constructor = function(){
        this.hoge = XXX;
        this.huga = YYY;
    }
    Constructor.prototype = {
        ZZZ : function(){ ・・・ }
    }
    var instance = new Constructor();
    のほうがいいのでしょうか?
    今回はたまたま簡単なロールオーバーなのですが、
    例えば膨大なデータを扱うアプリケーションだったりした場合には
    どういったロジックで組み立てていけばいいのか苦慮しています。

    $(function(){
        $("img.rollover").mouseover(function(){
            $(this).attr("src",$(this).attr("src").replace(state.off, state.on))
        }).mouseout(function(){
            $(this).attr("src",$(this).attr("src").replace(state.on, state.off));
        }).each(function(){
            $("<img>").attr("src",$(this).attr("src").replace(state.off, state.on))
        })
    });

    ロールオーバー程度ならこれだけですむのはわかるのですが、
    結局は大規模開発以外、オブジェクト指向の組み立て方は必要ないのでしょうか?
    846 : Name_Not - 2011/02/20(日) 13:26:35.15 ID:??? (+31,+29,-21)
    >>845
    どっちでもいいよ
    ひとつひとつ抽象化していったほうが複雑なアプリケーションを作りやすいってだけ。
    847 : Name_Not - 2011/02/20(日) 13:46:18.93 ID:??? (+40,+29,-47)
    >>846
    ありがとうございます。
    アプリケーション開発時に、

     ・扱うデータの量や行う処理
     ・処理速度やメモリ効率
     ・のちに拡張していきやすいか
     ・バグやエラーをフィックスしやすいか

    を勘案し、継承のさせ方も判断しなさいということでいいでしょうか?
    848 : Name_Not - 2011/02/20(日) 13:57:04.14 ID:??? (+37,+30,-123)
    >>847
    846 じゃないけど、最終的には後々時間が経ってそのコードを組んだことさえ忘れて再びそれを読む機会が出来たとき(あるいは同僚の誰かがそれを読んだとき)に理解できるか、だと思う。
    どんな組み方をしてもいいんだよ。自分で理解できる自信があるなら。

    その多寡は第三者である俺には判断できないが、俺なら>>845は抽象化しないで普通に書く。
    このぐらいのサイズなら一目で全体を把握できるだろうからね。
    849 : Name_Not - 2011/02/20(日) 14:18:55.73 ID:??? (+32,+30,-44)
    >>848
    レスありがとうございます。
    JavaScriptは他の言語に比べて縛りが弱く、いろんな表現ができるのが特長でもあり、
    それが初心者である僕にとっては迷いが生じる元となっていました。

    >>833さんはじめ、>>839さん?>>841さん、>>846さん、>>848さん
    お時間を割いてご意見いただきありがとうございました。
    850 : Name_Not - 2011/02/20(日) 18:20:39.55 ID:??? (-19,-30,-193)
    <div id="test1" style="height:3000px; overflow:auto;">
    <div id="test2" style="height:4000px; border:2px solid black;">
    aaa
    </div>
    </div>
    <script type="text/javascript">
    document.getElementById("test1").focus();
    document.getElementById("test2").focus();
    //--></script>

    「↓↑」キーでbodyのスクロールバーじゃなくてtest1のスクロールバーが動くようにしたいです。
    このソースのscriptでどうにかならないかなと思ったんですが、無理でした。
    マウスホイールでスクロールしたり、内側を一回クリックすれば、内側が先に動くんですが、キーボードだけで動かすことは可能でしょうか?
    onkeydownで↓↑を検知して移動じゃなくて、”内側を一回クリック”と同じことをjsでやりたいです。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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