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

    私的良スレ書庫

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

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

    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
    501 : Name_Not - 2013/03/11(月) 15:22:23.38 ID:??? (+8,-25,-31)
    IE8もまだ属性とプロパティと混同してて手抜き実装なんだけど
    503 : Name_Not - 2013/03/12(火) 00:33:21.33 ID:??? (+15,-30,-185)
    質問させてください。
    とある事情から、JavaScriptのデータ(配列やらオブジェクトやら)を、
    「文字列として」出力する必要がでてきました。
    つまり、

    var data = {id:1, text:'Hello'};
    var array = [1, "Hi"];
    // data = ごにょごにょ...
    // array = ごにょごにょ...
    console.log(data); // => {id:1, text:'Hello'} と出力
    console.log(array); // => [1, "Hi"] と出力

    としたいのですが、可能でしょうか?
    ちなみに、
    var data = "{id:1, text:'Hello'}";
    とするのはもちろんナシでお願いします。
    504 : Name_Not - 2013/03/12(火) 00:38:54.76 ID:??? (-1,-29,-12)
    >>503
    JSON.stringify
    505 : Name_Not - 2013/03/12(火) 00:40:00.24 ID:??? (+34,-30,-31)
    506 : Name_Not - 2013/03/12(火) 00:40:12.12 ID:??? (+0,-29,-12)
    >>503
    JSON.stringify
    507 : Name_Not - 2013/03/12(火) 01:04:20.80 ID:??? (+18,-30,-130)
    >>501-503
    こんな便利なものが! ありがとうございます!

    あと、たびたびすみません。類似の問題なのですが、
    console.log(function(){var foo = 'boo';});
    とした場合、Chromeではコンソールに

    function(){var foo = 'boo';}

    と表示されるのですが、

    $('#input').val(function(){var foo = 'boo';}); // inputタグに出力

    とした場合は、inputタグの値として表示させることができません。
    (空文字? なのか、変化がありません)

    こちらは何か方法はありませんでしょうか?
    508 : Name_Not - 2013/03/12(火) 01:18:34.64 ID:??? (+81,-29,+0)
    >>507
    Function#toString()
    509 : Name_Not - 2013/03/12(火) 01:21:20.12 ID:??? (+33,-27,-5)
    文字列で渡せばok
    510 : Name_Not - 2013/03/12(火) 01:23:26.28 ID:??? (+11,-30,-83)
    >>507
    console.log は渡された引数を内部で toString などをして表示しているけど、
    $('...').val() は引数に文字列型しか取らないので、
    自分で toString なり JSON.stringify なりして文字列にすればいい
    511 : Name_Not - 2013/03/12(火) 01:24:55.26 ID:??? (+34,-30,-20)
    >>507
    $('#input')[0].value = function(){var foo = 'boo';};
    512 : Name_Not - 2013/03/12(火) 01:26:11.14 ID:??? (+49,-30,-139)
    >>510
    ごめん、いろいろ間違ってた

    ・JSON.stringify は Function オブジェクトについては使えない
    ・$('...').val() は関数も引数に取れる(けど使い方が違う)

    .val() | jQuery API Documentation
    api.jquery.com/val/
    513 : Name_Not - 2013/03/12(火) 01:59:56.14 ID:??? (+81,+27,-69)
    >>505
    >>508
    ありがとうございます。どちらの方法でもできました!
    とくに >>508 の方の方法は不思議ですね。なぜ[0].valueだと表示できるのか不思議でなりません^^;

    >>509
    ありがとうございます。なんだか、function( index, value ) と、シグニチャが限定されているっぽいですね。

    とにかく、皆様本当にありがとうございました。
    514 : Name_Not - 2013/03/12(火) 02:21:54.65 ID:??? (+15,-30,-92)
    >>513
    > とくに >>508 の方の方法は不思議ですね。なぜ[0].valueだと表示できるのか不思議でなりません^^;
    String 型にキャストされる仕様だから。
    http://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/HTML/HTMLInputElement.html#HTMLInputElement-value

    jQuery で引数のデータ型によって処理を変更する方法は、標準仕様と大分違うから惑わされないほうがいい。
    515 : Name_Not - 2013/03/12(火) 02:28:39.97 ID:??? (+10,-29,-46)
    >>513
    > どちらの方法でもできました!
    >>512も指摘してるが、function に JSON.stringify は適用できない。
    それを許す実装はあるが、仕様上は不可だから修正されれば使えなくなる。
    516 : Name_Not - 2013/03/12(火) 06:47:21.31 ID:??? (+64,+29,+0)
    >>511
    >>512
    アドバイスありがとうございます。
    とても勉強になりました。
    518 : Name_Not - 2013/03/13(水) 04:28:08.78 ID:??? (+63,+30,-139)
    友人が
    「これからはCoffeeScriptだ」
    見たいなこといっててサーバサイドのスクリプトとかいじってるけどさぁ……。
    世の中の多くはレガシーシステムだってことわかってんのかね。
    そいつのCoffeeScriptとやらより、俺のJavaScriptの方が100倍は表現力・オブジェクト指向性たかいわ。
    言語が先進的だからそれ使ってる自分も先進的。
    んなことほざくガキとは絶対一緒に仕事したくねぇな。
    「JavaScriptって汚くねぇか?」
    とか言っちゃってさ。
    その自分はCoffeeScriptでグローバル変数アホみたいに使ってて。
    はぁ、もう勝手にやってろって感じ。
    520 : Name_Not - 2013/03/13(水) 08:04:45.28 ID:??? (-1,-29,-17)
    >>519
    var 付けてなければグローバル変数のままでは?
    521 : Name_Not - 2013/03/13(水) 08:19:34.39 ID:??? (+124,+29,-5)
    そりゃそうだけどvarで変数宣言しないなんてことがあるわけないもの
    522 : Name_Not - 2013/03/13(水) 10:59:24.44 ID:??? (+104,+29,-14)
    >>521みたいな奴がいるわけがない、と思ったら居た。
    523 : Name_Not - 2013/03/13(水) 12:20:56.91 ID:??? (+105,+29,-14)
    >>522みたいな奴がいるわけがない、と思ったら居た。
    524 : Name_Not - 2013/03/14(木) 00:41:42.22 ID:??? (+72,+29,-14)
    >>523みたいな奴がいるわけがない、と思ったら居た。
    525 : Name_Not - 2013/03/14(木) 01:37:30.23 ID:??? (+18,-9,-10)
    ところで、varで変数宣言しないなんてことあるの?
    526 : Name_Not - 2013/03/14(木) 02:03:06.33 ID:??? (+52,+29,-14)
    そんな奴おれへんやろ~。
    527 : Name_Not - 2013/03/14(木) 02:44:57.06 ID:??? (+50,+27,-17)
    全部仮引数にしちゃいなyo!
    528 : Name_Not - 2013/03/14(木) 02:56:21.91 ID:??? (+36,-30,-118)
    試験問題
    次のうちクリックされたときに呼ばれるのはどれか
    理由も述べなさい

    var onclick = function(){alert('hoge')}
    onclick = function(){alert('piyo')}
    function onclick(){alert('fuga')}
    529 : Name_Not - 2013/03/14(木) 03:26:09.92 ID:??? (+92,+29,-15)
    >>528
    イベントハンドラ未定義なのでどれも呼ばれません
    530 : Name_Not - 2013/03/14(木) 05:48:06.63 ID:??? (+62,+27,-3)
    >>529
    そこは脳内変換で
    531 : Name_Not - 2013/03/14(木) 06:17:51.13 ID:??? (-6,-29,-16)
    未定義でもonclick=は
    532 : Name_Not - 2013/03/14(木) 06:43:28.64 ID:??? (+3,-30,-108)
    これonclick = function(){alert('piyo')}だけなら動くんだな
    onclickを新しく作っちまうとダメか
    でも新しくつくったonclickもwindow.onclickなんだね?
    window.onclickを作り変えるとダメ?どゆこと?
    533 : Name_Not - 2013/03/14(木) 08:13:21.18 ID:??? (-1,-29,-3)
    ヒント: setter/getterとは何か、説明せよ。
    534 : Name_Not - 2013/03/14(木) 09:50:44.09 ID:??? (-2,-30,-49)
    Firefoxはonclickにgetter/setter設定されてるように見えるけど、
    Chromeはちょっと違う感じだな
    まあ動作的には似たようなもんだけど
    535 : Name_Not - 2013/03/14(木) 13:55:40.57 ID:??? (+51,+28,-1)
    なんか、勉強になった。
    536 : Name_Not - 2013/03/15(金) 00:28:03.83 ID:??? (+43,-30,+0)
    【環境】mac OS10.5.8 firefox16

    【html ソース】
    <html><div id="test">〜〜〜〜〜</div></html>

    【Javascript】
    var count = 1;

    $(function() { $("#test").hover(function(){
    count = 0;
    console.log('reset:' + count);
    setTimeout(countUp,3000,count);
    });

    function countUp(num) { num++;
    console.log('count up:' + num);
    setTimeout(countUp,3000,num);
    }

    というのをつくりました。基本的に何もしなければ3秒毎にcountの値を増やしていき、ログに出力、
    divにマウスが乗ったらcountの値を0にリセットして出力、その後0からカウントアップ再開したいと考えました。

    2→3→0(リセット)→1→2→・・・
    という挙動を期待しているのですが、

    2→3→0(リセット)→4→5→・・・
    となってしまいます。関数countUpに変数countの値が渡らず、別系統でカウントアップがされているようなのですが、
    何がどう間違ってるのか見当がつきません。

    jQueryを使っているものの、中でやってることはjQuery的ではないので、こちらで質問しました。
    スレチならすみませんが、宜しくお願いします。
    537 : Name_Not - 2013/03/15(金) 01:03:10.00 ID:??? (+3,-30,-101)
    それだと hover(function(){... が呼び出される度に
    setTimeout の連鎖が追加されていく(clearTimeout してない)ので

    2→3→4→5→・・・

    0(リセット)→1→2→3→・・・

    が同時並行的に出力される筈だが?

    ちなみにそのコードだと
    setInterval 使う方が管理は楽だろう
    538 : Name_Not - 2013/03/15(金) 01:19:19.42 ID:??? (-1,-29,-4)
    そもそもcountがcountUpされてないけど良いのか
    539 : Name_Not - 2013/03/15(金) 01:41:26.98 ID:??? (+55,+28,+0)
    >>536
    俺ならこうする
    http://jsfiddle.net/mHpdL/4/
    540 : Name_Not - 2013/03/15(金) 06:57:06.24 ID:??? (+57,+29,-1)
    それだと動作があんま綺麗じゃないね。
    541 : 536 - 2013/03/15(金) 12:27:05.76 ID:??? (+60,+27,-48)
    ありがとうございます。
    取り急ぎclearTimeoutを入れ、関数に引数を渡さないようにすると意図どおりの動きになりました。
    どうも引数の扱いも誤解してたみたいです。
    setIntervalについてはこれから調べてみたいと思います。
    542 : Name_Not - 2013/03/15(金) 12:34:52.76 ID:??? (-1,-29,-13)
    setIntervalの例だとhover後の0~1の間が3秒にならんな
    543 : Name_Not - 2013/03/15(金) 13:05:54.83 ID:??? (+34,-30,-214)
    カードゲームを作りたいのですがデータを記述する方法がわかりません
    どうすればデータを作る事ができますか?

    myData = new Array(41);
    for (i=0; i<41; i++) myData[i] = i+1;
    for (i=0; i<500; i++){
    myA = Math.floor( Math.random() * 41 )
    myB = Math.floor( Math.random() * 41 )
    myBackup = myData[myA];
    myData[myA] = myData[myB];
    myData[myB] = myBackup;
    }
    myCard = new Array(5);
    for (i=0; i<5; i++) myCard[i] = myData[i];

    for(i=0; i<5; i++){
    document.write("[",myCard[i],"]");
    if (i < 4) document.write("-");}

    これでランダムの数値を持ってきても、それをカードのデータに変換する方法が見つかりません
    どうすればカードのデータに変換できますか?
    544 : Name_Not - 2013/03/15(金) 13:09:51.96 ID:??? (+2,-15,+0)
    マルチ
    545 : Name_Not - 2013/03/15(金) 13:13:36.90 ID:??? (+65,+30,+0)
    >>543
    >>521-526
    546 : Name_Not - 2013/03/16(土) 00:10:21.52 ID:??? (+3,-30,-55)
    ちょっとした小技知りたいんですが
    var hoge =[];
    if(hoge['a']{'b'}=='unko')ほにゃらら

    ってやるとhoge['a']は生成されてないからバグが発生しちゃいますが
    皆さんこういう対処はどうやってますか?
    i
    f(hoge['a']){
       if(hoge['a']['b']=='unko')ほにゃらら
    }
    というのは何か汚いように見えるんですが
    547 : Name_Not - 2013/03/16(土) 00:23:31.83 ID:??? (+3,-30,-74)
    まっとうな方法
    if (hoge['a'] && hoge['a']['b'] == 'huga') {}

    少しトリッキー
    var hage;
    if ((hage = hoge['a']) && hage['b'] == 'hufa') {}
    548 : Name_Not - 2013/03/16(土) 00:32:05.49 ID:??? (-2,-30,-36)
    小技の前に、hogeを配列として使うわけじゃなければ初期化は var hoge = {}; のほうがいいだろ
    hoge['a']{'b'}はまあタイプミスなんだろうけど
    549 : Name_Not - 2013/03/16(土) 00:47:28.91 ID:??? (-2,-30,-20)
    トリッキーな方が通っぽくて職場でモテそうですね!
    ありがとうございます!

    はい、{'b'}はタイプミスで['b']です
    550 : Name_Not - 2013/03/16(土) 03:04:09.73 ID:??? (-1,-29,-26)
    var hoge = hoge || {};
    職場でモテる記述ならコレ
    なんか雑誌で週刊モテるjavascript講座とかやってくんないのかね
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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