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

    私的良スレ書庫

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

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

    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
    651 : 628 - 2014/04/19(土) 22:31:43.84 ID:??? (+0,-30,-279)
    >>635
    失礼しました。仰るとおりで<div id = "result"></div>でbody内に記述してあります。
    JSでこの中に可変のtableを作成していました。

    HTMLファイルが読み込まれてからの実行順を理解しないといけないと思いました。
    勉強します。ありがとうございます。

    >>637
    アドバイスありがとうございます。
    window.onload(){} 内に各関数を定義し、TD要素にイベントハンドラを設定するのではなく、
    addEventListenerを試しました。
    どの位置が押されたのかの情報が必要なため、以下のように呼び出し先の関数(clck)に引数を設定しました。

    function addListener(max){
    for(var i=0;i<max;i++){
    for(var j=0;j<max;j++){
    var a = document.getElementById(i + "" + j);
    a.addEventListener( "click", function(){clck(i,j)});
    }
    }
    }

    実行してみると、どこをクリックしてもclck(5,5)が実行されてしまいます。
    無名関数を使って引数を指定したために、すべての設定が最後のもので統一されてしまったのでしょうか。
    652 : 628 - 2014/04/19(土) 22:32:23.20 ID:??? (+7,-30,-159)
    >>640-641,643
    仰るとおり、マス目を可変にしているため、コードからtableを生成しています。

    >・タグの要素としてのonclick=は使わない。DOMに直接イベントを割り当てる。
    onclickの代わりにaddEventListenerを試してみましたが、上記の通りです。。

    >・tdに対してイベントを割り当てるのではなく、table(もしくはその上の要素)にイベントハンドラを割り当てる。だからidも不要。
    クリックによってイベントが実行できるように思えますが、
    IDがないとどこがクリックされたかが特定できないと思うのですが。

    その他、ありがとうございます。
    試してみます。
    653 : Name_Not - 2014/04/19(土) 23:10:07.12 ID:??? (+43,+13,-2)
    > IDがないとどこがクリックされたかが特定できないと思うのですが。
    できる。
    654 : Name_Not - 2014/04/19(土) 23:17:00.60 ID:??? (+40,+17,-1)
    やり方書けよカス
    655 : Name_Not - 2014/04/19(土) 23:32:29.43 ID:??? (+57,+29,-11)
    それぐらい自分で調べろやw
    俺が教えないのは、自分のためだ。

    楽しいからなw
    656 : 628 - 2014/04/20(日) 00:52:53.55 ID:??? (+18,-30,-214)
    >>653,655
    返信ありがとうございます。
    できました!

    方法としては、おっしゃったとおり、tableタグにonclick"clck(e)"
    でイベントハンドラを登録し、
    clck関数で受け取ったevent(ここでは変数e)から targetプロパティでクリック元を特定出来ました。
    あとは特定できた要素のinnerHTMLを変更するのみで、コードを短縮したままで実装できました。

    上要素に割り当てたイベントハンドラから、子要素が押された場合でも特定できるとは想像していなかったので
    大変勉強なりました。これは他部分でも生かせそうです。
    おかげさまで1つ賢くなれました。ありがとうございます!

    今度は、3目並べ(もしくは5目並べ)のCPU部分を作成していく予定です。
    勉強しつつ、頑張ります。
    本当にありがとうございました!
    657 : Name_Not - 2014/04/20(日) 01:25:01.15 ID:??? (+60,+29,-7)
    >>656
    3目並べと5目並べはだいぶ別のゲームな気がするが言いたい事は分かる
    658 : Name_Not - 2014/04/20(日) 01:30:35.21 ID:??? (-1,-29,-11)
    だからonclick属性作るなって。
    659 : Name_Not - 2014/04/20(日) 03:27:45.73 ID:??? (+5,-29,-74)
    >>656
    イベントバブリング(伝播)
    >>631

    JSでは、DOM木が構築されてから、アクセスしないといけないので、
    ページの読み込み完了のイベントを使うか、
    bodyタグの最後に書けばよい
    660 : Name_Not - 2014/04/20(日) 04:28:01.88 ID:??? (-1,-29,-7)
    >>651
    イベントハンドラ中のi,jはイベントハンドラ設定時の値で固定されてるわけじゃなくて、外の値を参照してる
    661 : Name_Not - 2014/04/20(日) 04:59:45.18 ID:??? (+4,-29,-92)
    onscrollハンドラの中でブレークすると、画面はまだスクロールしていません
    このことからonscorollはスクロールする前に発生し、
    preventDefaultすればスクロールが中止されると考えましたが、
    preventDefaultしてもスクロールは止まりません。
    何故でしょうか?
    662 : Name_Not - 2014/04/20(日) 07:48:23.16 ID:??? (+74,+29,-72)
    >>624-626の件ですが、画面から消えた要素をdisplay:noneするようにしたら、
    想像以上にキビキビ動くようになりました
    スクロールごとに当たり判定して消したり出したりするコストは結構あるんじゃないと思っていましたが
    それよりもノードの複雑性から来るコストの方が多かったようです
    ありがとうございました
    663 : 628 - 2014/04/20(日) 11:40:52.61 ID:??? (-14,-30,+0)
    >>628-629
    最終的に以下のようにしました。
    ・repeat文でtableの作成
    ・onclickではなく、addEventListenerによるイベント通知
    ・window.onload内で完結するコード
    ありがとうございました!

    window.onload = function(){
    var turn = 0;
    var color = ["●","◯"];
    makefield();

    function makefield(){
    var max = 6;
    var table = "<table>" + ("<tr>" + "<td></td>".repeat(max) + "</tr>").repeat(max) + "</table>";
    document.getElementById("result").innerHTML = table;
    document.getElementById("result").addEventListener("click",clck);
    }
    function clck(event){
    if(event.target.innerHTML == ""){
    event.target.innerHTML = color[turn];
    turn = (turn + 1) % 2;
    }
    }
    }

    <body>
    <div id="result"></div>
    </body>
    664 : Name_Not - 2014/04/20(日) 15:21:17.82 ID:??? (-1,-29,-52)
    >>661の件ですが、
    onmousemoveでpreventDefaultしてもマウスカーソルの動きが止まりはしないので
    スクロールが止まらないのは当たり前でした
    665 : Name_Not - 2014/04/20(日) 23:28:00.81 ID:??? (+29,+6,-46)
    jqueryで要素のクライアント座標を得るにはどうしたらいいのでしょうか?
    667 : Name_Not - 2014/04/21(月) 11:15:17.69 ID:??? (-3,-29,-11)
    >>665
    .offset()
    668 : Name_Not - 2014/04/21(月) 13:02:15.67 ID:??? (+28,+5,+1)
    ありがとうございました
    669 : Name_Not - 2014/04/21(月) 17:57:58.52 ID:FR8PhSfW (+70,+30,-245)
    日本政府からの支援の申し出に対する韓国でのメディア論調
    /nox/remoteimages/46/9a/1e2b7b1e0d212384505c94bfb9fc.jpeg 「韓国に対する救助支援を政治利用するのではないかという批判が相次ぐ」
    「政治的下心が垣間見え、我が政府当局が苦慮している」
    「国際平和貢献の事例として、集団的自衛権容認に向けた政治カードに利用した」

    今日も平壌運転で、じつに結構なことです。


    ちなみに、今朝の不治テレビ「とくダネ!」では現地被害者家族のインタビューで
    どうして日本からの支援申し出を断ったのか、という部分に対して
    「どうして民間からの支援申し出を断ったのか」という字幕に変えてました。
    さすがは不治テレビ。
    670 : Name_Not - 2014/04/21(月) 18:35:46.46 ID:??? (+52,+29,+0)
    どういうこっちゃ
    671 : Name_Not - 2014/04/21(月) 19:10:32.40 ID:??? (+57,+29,-13)
    利用者の平均IQが高い技術スレにネトウヨコピペなんて効果あるわけないだろ
    恥を知れ
    672 : Name_Not - 2014/04/21(月) 19:35:18.87 ID:??? (+2,+29,-1)
    在日は早く祖国に帰れ
    673 : Name_Not - 2014/04/21(月) 19:47:02.02 ID:??? (+7,-10,-13)
    ネトウヨ哀れw
    674 : Name_Not - 2014/04/21(月) 19:49:13.31 ID:??? (+52,+29,-1)
    日本が嫌なら出てけよ
    675 : Name_Not - 2014/04/21(月) 19:57:10.52 ID:??? (+52,+29,-2)
    お前が出て行けよ
    カスが
    676 : Name_Not - 2014/04/21(月) 20:05:47.25 ID:??? (+57,+29,-15)
    JavaScriptと無関係な話題はスルーかつ控えて頂きたく
    677 : Name_Not - 2014/04/21(月) 20:57:33.28 ID:??? (+12,-30,-42)
    質問です
    Javascriptで要素のスタイルを変更するのではなくスタイルシートを
    .hoge .age{
    width:100%;
    }

    .hoge .age{
    width:50%;
    }
    みたいに変更する方法ってあるんでしょうか?
    678 : Name_Not - 2014/04/21(月) 21:13:02.33 ID:??? (+65,+28,-42)
    可能
    jqueryにそういうプラグインがあるのでそれを使うのが早い
    679 : Name_Not - 2014/04/21(月) 21:13:06.80 ID:??? (+59,+30,+0)
    680 : Name_Not - 2014/04/21(月) 21:22:17.61 ID:??? (+66,+29,-3)
    >>678-679
    document単位にあったとは・・・。ありがとうございます
    初めてなんで直接書き込んでみます
    681 : Name_Not - 2014/04/22(火) 01:54:55.31 ID:??? (+10,-30,-52)
    CSSに便乗質問です
    insertRuleで"element.class{prop:value}"のようにルールを1つずつ追加しているのですが
    これをまとめて
    "element.class{prop:value} element#id{prop:value}"
    のように複数のルールを一度に追加することってできますか?
    682 : Name_Not - 2014/04/22(火) 16:54:54.49 ID:??? (+50,+25,+1)
    >>681
    はい
    684 : Name_Not - 2014/04/22(火) 19:49:13.95 ID:??? (-6,-30,-41)
    >>683
    Yahooにaccess-control-allow-originでクロスドメインを許可するようお願いする
    http://developer.mozilla.org/ja/docs/HTTP_access_control
    685 : Name_Not - 2014/04/22(火) 20:42:01.44 ID:??? (+4,-30,-11)
    小技について質問
    if(a=="a" || b=="a")を短くする方法ってありますか?
    if(a || b=="a") ってやったらダメでした
    686 : Name_Not - 2014/04/22(火) 21:10:19.64 ID:??? (+42,+10,+0)
    >>685
    ない
    687 : Name_Not - 2014/04/22(火) 21:24:29.75 ID:??? (+56,+27,+0)
    >>686
    諦めやす!
    688 : Name_Not - 2014/04/22(火) 21:58:46.10 ID:??? (-1,-29,-2)
    >>685
    [a, b].indexOf("a") != -1
    689 : Name_Not - 2014/04/22(火) 22:07:37.26 ID:??? (-1,-29,-20)
    lodashで_.any()みたいな感じの関数使う
    690 : Name_Not - 2014/04/22(火) 23:10:18.98 ID:??? (+52,+29,-3)
    そんなことして誰得?
    691 : Name_Not - 2014/04/22(火) 23:18:02.33 ID:??? (+51,+28,-3)
    プログラムが短くなるだろうが
    692 : Name_Not - 2014/04/22(火) 23:27:59.64 ID:??? (+50,+27,-2)
    短くなってないwww
    693 : Name_Not - 2014/04/22(火) 23:38:22.22 ID:??? (+0,-29,-14)
    そもそもlodashに_.anyなんてなかった
    すまそ
    694 : Name_Not - 2014/04/22(火) 23:39:59.98 ID:??? (-2,-29,-14)
    >>693
    あるよ

    http://lodash.com/docs#some
    Aliases

    _.any
    695 : Name_Not - 2014/04/22(火) 23:47:50.32 ID:??? (+3,-30,-44)
    はわわ本当だね
    でも見たら想定と違ってて、想定してたのと同じ関数はcontainsだった

    var a = 3;
    var b = 4;
    var c = 3;

    console.log(_.contains([a,b],c));
    →true
    696 : Name_Not - 2014/04/23(水) 03:22:01.78 ID:??? (+21,-29,-91)
    chromeはIME制御がうまくいってないようで
    contenteditableで日本語入力してIMEオンのままbootstrapのボタンを押すと、
    フォーカスは外れているのにキー入力だけがcontenteditable領域に行くという変な状態になります
    firefox, ieはそんなことはありません
    これをどう回避できるでしょうか?
    あるいは関係者の方が見ていたらこのバグの修正をお願いします
    697 : Name_Not - 2014/04/23(水) 15:04:31.15 ID:??? (+12,-29,-85)
    http://jsbin.com/zoxecica/1/edit

    再現コード書きました
    divで日本語入力→IMEオフにせずにボタンをクリック→その後キー入力
    とすると、chromeでのみ、文字がdivに出現します
    textareaではそうはならないので、
    contenteditableのフォーカスアウト時の処理が甘いのだと思われます
    698 : Name_Not - 2014/04/23(水) 15:07:12.27 ID:??? (+63,+29,-64)
    バグはいつか解消するものなので
    コードをバグに最適化するといつか非最適になってしまう
    かといってバグがいつ解消するかは分からない
    という問題がありますね
    699 : Name_Not - 2014/04/23(水) 15:18:45.77 ID:??? (+67,+29,-21)
    バグを見つけてうれしくてうれしくて仕方ないって感じがよく伝わってくるよ
    700 : Name_Not - 2014/04/23(水) 15:24:04.50 ID:??? (+68,+29,-27)
    >>697
    入力フィールドが複数ある場合でも?

    キー入力と同時にそのフィールドに自動的にフォーカスされるような
    「配慮」が実装されている可能性も考えられる
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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