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

    私的良スレ書庫

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

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

    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
    51 : Name_Not - 2014/11/08(土) 00:52:02.23 ID:???.net (+2,-29,-4)
    >>39
    関数外で宣言する必要がまるでない
    (function(){
    var a = a || [];
    })();
    52 : Name_Not - 2014/11/08(土) 00:57:39.11 ID:???.net (+21,-30,-95)
    >>45
    では、面倒くさいが、
    span[style="color:red"], span[style="color: red"], span[style="color : red"], span[style="color:#f00;"], span[style="color: #f00"]
    のようにホワイトスペースやカンマの有無の全ての組み合わせを , 区切りで宣言しろ
    ブラウザがstyle属性値をどのような書式で持つかは実装依存
    ブラウザがバージョンアップして挙動が変更することも考えられるので必ず「全てのパターン」を宣言しろ
    53 : Name_Not - 2014/11/08(土) 01:01:39.96 ID:???.net (+7,-30,-29)
    >>51
    それだと関数内の var で a が新たに宣言されてしまうので不可
    var a = "test";
    (function(){
    var a = a || []; // 関数外の宣言に関わらず [] が代入される
    })();
    54 : Name_Not - 2014/11/08(土) 01:11:54.57 ID:???.net (+12,-29,-39)
    >>53
    "test" でも [] でも良い状況ってどんなケース?
    [] で初期化するんだからオブジェクトを想定していたんだが
    55 : 54 - 2014/11/08(土) 01:13:42.72 ID:???.net (-1,-29,-20)
    あと、その条件なら普通にグローバルコードで宣言しろよ、と思うね
    var a = a || [];
    56 : Name_Not - 2014/11/08(土) 01:14:41.99 ID:???.net (+3,-29,-5)
    >>54
    a = "test"じゃなくても{}でも[]でも同じこと
    試せばわかる
    57 : Name_Not - 2014/11/08(土) 01:22:39.75 ID:???.net (-1,-30,-11)
    >>56
    なるほど、これでいいかね?
    var a = [];
    (function(){
    var a = this.a || [];
    }).call(this);
    59 : Name_Not - 2014/11/08(土) 01:40:57.34 ID:???.net (+40,+29,-16)
    >>39http://peace.2ch.net/test/read.cgi/hp/1415213701/23n のコピペだからここで回答するだけ無駄
    60 : Name_Not - 2014/11/08(土) 02:12:08.58 ID:???.net (+63,+29,-33)
    >>59
    すまん、向こうで回答しなおしてきた
    荒らすのもいい加減にして欲しい
    61 : Name_Not - 2014/11/08(土) 02:17:33.79 ID:???.net (+5,-30,-45)
    >>42
    document.querySelector('span[style="color: red;"]')

    ただしこっちの方が安定的
    Array.prototype.filter.call(document.querySelectorAll("span"), function(e){ return e.style.color == "red;" })[0]
    63 : Name_Not - 2014/11/08(土) 10:54:19.86 ID:???.net (-1,-29,-8)
    querySelectorの第2引数の情報MDNに乗ってなかったよく知ってるな
    65 : Name_Not - 2014/11/08(土) 13:08:58.96 ID:YzcprxwW.net (+10,+25,-1)
    >>64
    いやですw
    66 : Name_Not - 2014/11/08(土) 13:12:09.89 ID:???.net (+57,+29,-6)
    荒らしの立てたスレだから荒らしだけが残ればいい
    67 : Name_Not - 2014/11/08(土) 14:04:11.51 ID:???.net (+11,-30,-226)
    >>46
    >どういう風に変換するのかは、仕様で決まってるのかな?

    要素 element の element.style の戻り値が実装する
    CSSStyleDeclaration インタフェースの
    getPropertyValue() メソッドを呼び出したときの
    戻り値の書式は CSSOM で決まってる。
    (たぶんこれが element.style.xxx でアクセスしたとき得られる値だろう)

    color の場合

    "rgb(R, G, B)" (不透明度 1 の場合)または
    "rgb(R, G, B, A)"
    になる(R, G, B は10進数で A は小数、カンマの後はスペース)

    element.style.color = ... で設定したときに element の style 属性にも
    同じように反映されると考えるのが自然だが、仕様には書かれてないね

    HTML 仕様にも style 属性のふるまいについて
    www.w3.org/TR/css-style-attr/
    を参照しているが
    element.style.color = ... で値を設定したときについては
    どうも書かれてないみたい
    70 : Name_Not - 2014/11/08(土) 14:30:42.40 ID:???.net (+19,-30,-149)
    >>68
    span[style="color: red"], span[style="color : red"], span[style="color :red"],
    span[style^="color: red;"], span[style^="color : red;"], span[style^="color :red;"],
    span[style^="color: red ;"], span[style^="color : red ;"], span[style^="color :red ;"],
    span[style*=";color: red;"], span[style*=";color : red;"], span[style*=";color :red;"],
    span[style*=";color: red ;"], span[style*=";color : red ;"], span[style*=";color :red ;"],
    span[style$=";color: red;"], span[style$=";color : red;"], span[style$=";color :red"],
    span[style$="; color: red;"], span[style$="; color : red;"], span[style$="; color :red"]
    のように部分一致にすれば良い
    これでも足りないが、ホワイトスペースの組み合わせを考えると、気が遠くなる

    >>69
    querySelector がナンセンスなのは同意だが、querySelectorでないと困ると駄々をこねるので>>52で回答した
    ComputedStyle を取るほうがまだマシだな
    71 : Name_Not - 2014/11/08(土) 15:32:07.79 ID:???.net (+11,-30,-58)
    >70に付け加えるなら「color: #f00, color: #ff0000, color: red, color: rgb(255, 0, 0)」のパターンもある
    ホワイトスペースや ; の組み合わせパターンも考えると、かなり大変だな
    ナンセンスな実装には違いない
    72 : Name_Not - 2014/11/08(土) 16:55:19.91 ID:???.net (+36,-30,-195)
    function abc(){
    var result = aaaa();
    result.ok = function(e){

    }
    }
    って書くのと
    function ok(){

    }
    function abc(){
    var result = aaaa();
    result.ok = ok;
    }
    }
    って書くのどっちがメモリにやさしいですか?
    前者はabc()を呼ぶたびに中の無名関数が生成されていってメモリの無駄になる気がするんですが
    73 : Name_Not - 2014/11/08(土) 16:58:56.26 ID:???.net (+62,+29,-37)
    >>72
    実際にベンチマーク取ればわかるだろ?

    わからければ・・・・違いはないということさ。
    74 : Name_Not - 2014/11/08(土) 19:27:34.31 ID:???.net (+3,-30,+0)
    なんかあっちはわざと?くだらない話ばかりして
    グダグダしてるから、こっちにまともな答え書いておくわ。

    Math.random() は0から1未満の数を返す。だから0にはなるが1.0にはならない。

    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random
    > [0,1) 、……つまり、0 以上 1 未満の範囲で疑似乱数を返します。Java と同様に、現在時刻をシードとして乱数を生成します。

    求めたい値が、0~5であれば、0, 1, 2, 3, 4, 5 の6パターンなので
    Math.floor(Math.random()*6)が正解。

    Math.random()が1がでるのであれば、1×6 = 6になるが、
    1未満を返すので6未満、つまり最大でも5.9999・・・の小数点切り捨てで5が最大になる。
    0~1未満を6倍すると以下のようになるから、計算上は公平になる。

    Math.floor(0 ~ 0.9999・・・) = 0
    Math.floor(1 ~ 1.9999・・・) = 1
    Math.floor(2 ~ 2.9999・・・) = 2
    Math.floor(3 ~ 3.9999・・・) = 3
    Math.floor(4 ~ 4.9999・・・) = 4
    Math.floor(5 ~ 5.9999・・・) = 5


    Math.floor(Math.random()*6) - 1; だとrandom() = 0の時
    Math.floor(0*6) - 1 = Math.floor(0) - 1 = -1 なので明らかに間違い。
    75 : Name_Not - 2014/11/08(土) 19:34:02.86 ID:CMgSWh8C.net (+19,+29,-33)
    偽スレと本スレの格の違いがでたなw
    77 : Name_Not - 2014/11/08(土) 19:48:02.89 ID:???.net (+91,+29,-23)
    こっちもぐだぐだ感あふれてるわ
    さっきはあっちのスレにたまたま人が多かっただけで何も変わらん
    78 : Name_Not - 2014/11/08(土) 19:48:20.50 ID:???.net (-14,-30,-150)
    >>76
    >例えばさ、乱数が0.0から0.9まで出るとするじゃん

    それは精度が低い(小数点第一位で終わってる)から。

    random()が浮動小数点数を返すのは
    精度が高く無いと、数値をかけた時に狂うから。

    例えば0~5ではなく、0~99の時は
    Math.random()*100になるが
    0.4 だと 40、0.5 だと 50。41~49が出る確率は0になってしまう。

    これが0.4~0.5の間もちゃんとでるのであれば、
    0.41*100 = 41、0.42*100 = 42 のようにちゃんとでてくれる。

    random()が0~1未満の浮動小数点数(なるべく小数点以下が多い数)を
    返すのは、ある範囲の整数を返すときに必要な「任意の数をかける」時に
    問題ないようにするためなんだよ。

    君が言ってる隔たりの原因は精度が低いから。
    79 : Name_Not - 2014/11/08(土) 19:50:04.53 ID:???.net (+104,+29,-6)
    >>77
    なんで始まってからすぐグダグダになるんだよw
    80 : Name_Not - 2014/11/08(土) 19:50:31.28 ID:/Hj0O7lg.net (-27,+29,+0)
    >>78
    うん、ありがとう
    82 : Name_Not - 2014/11/08(土) 19:55:02.99 ID:???.net (+68,+29,-6)
    >>79
    こっちは>>39>>42に対する回答がぐだぐだだったし、何も変わらん
    83 : Name_Not - 2014/11/08(土) 19:57:36.27 ID:???.net (+3,-30,-79)
    > 0.2*6=1.2
    > 0.3*6=1.8
    > 0.4*6=2.4
    > 0.5*6=3.0

    ここだけを見ると2が出る確率が低いようだけど、実際は


    0.00000 <= x < 0.16666… = 0
    0.16666 <= x < 0.33333… = 1
    0.33333 <= x < 0.5     = 2
    0.5    <= x < 0.66666… = 3

    になるから、どれも0.166666…ずつで、
    ちょうど同じ数なんだよなね。
    84 : Name_Not - 2014/11/08(土) 20:07:18.90 ID:???.net (-24,-30,+0)
    >>42>>46>>52>>67>>70>>71
    elm.style.xxx に値をセットした時には setPropertyValue() が呼び出される
    http://www.w3.org/TR/cssom/#dom-cssstyledeclaration-camel-cased-attribute
    「Setting the camel-cased attribute attribute must invoke setProperty() ...」

    その際に値が自動変換される
    http://www.w3.org/TR/cssom/#serialize-a-css-component-value
    実際の定義は細かいけど、例として…
    keyword は、小文字に変換される(RED は red になる。決して rgb() や #xxx などには変換されない)
    <color> は、rgb(x, x, x) 又は rgba(x, x, x, x) に変換される。値同士は ", "(カンマ・スペース) で区切る
    <length> で値が 0 の場合は、0px に変換される

    さらに、style属性の文字列が更新される
    http://www.w3.org/TR/cssom/#dom-elementcssinlinestyle-style
    「Mutating the declarations must set the style content attribute ...」
    その際の文字列の生成方法は、http://www.w3.org/TR/cssom/#serialize-a-css-declaration-block に記載されている。
    概説すると、
    [1] それぞれの宣言を「プロパティ名 + ": " + 値 + ";"」の形式にする。
    .  その際、ショートハンドプロパティで表せるならそれを用いる
    [2] それぞれを " " で結合する


    …というわけで、ブラウザが CSSOM に則っているなら、
    elm.style.color = "red"; としたら style="color: red;" になるし、>>46 の各々の変換も仕様に沿ったものである。

    ただし、CSSOM はまだ Working Draft なので、上記の仕様に沿っていないブラウザも多数あるのが事実。
    とは言っても >>42 の場合は自分が動かす分で動作すればいいだけなので、自分の環境で動くものを回答レスから適当に拾えばいい。長文すまん
    85 : Name_Not - 2014/11/08(土) 20:25:18.35 ID:???.net (-1,-30,-203)
    >>81
    そのコードが何をやってるのかさっぱりわからんけど
    (SQUEAKとかいうやつみたいだけど考えるの面倒くさいw)

    以下のように数値変えたらそれっぽくなったよ。
    何か計算間違ってるんじゃね? 点の取り方とか個数とか枝切の値とか

    var arr = new Array();
    for (m = 0; m < 1000; m++) {
    for (n = 0; n < 1000; n++) {
    arr.push([m, n]);
    }
    arr.push([m, n]);
    }

    function crd() {
    var rdm = arr[Math.floor(Math.random() * 1000000)];
    return Math.pow(rdm[0], 2) + Math.pow(rdm[1], 2);
    }

    var j = 0;
    for (i = 0; i < 100000; i++) {
    if (crd() < 1000000) {
    j++;
    }
          }
          console.log("π≒" + j * 4 / 100000);
    86 : Name_Not - 2014/11/08(土) 20:30:25.30 ID:???.net (+36,+29,-98)
    >>81
    初めから10201個の点の位置を決めている、というのがナンセンス
    この時点で π の正確な値は出せない
    極端な例で言うと、3x3の9個の点だと、中央の1点しか円の内側にないでしょ?

    改善する方法は、点の位置を毎回ランダムに決めること
    頑張れば100文字ぐらいでコード書けるよ
    88 : Name_Not - 2014/11/08(土) 20:35:53.57 ID:/Hj0O7lg.net (-22,+29,-4)
    >>85
    うーん、点の個数が少ないのかな?
    90 : 85 - 2014/11/08(土) 20:44:34.93 ID:???.net (+0,-30,-242)
    > var arr = new Array();
    > for (m = -50; m < 51; m++) {
    > for (n = -50; n < 50; n++) {
    > arr.push([m, n]);
    > }
    > arr.push([m, n]);
    > }

    50と51の違いも気持ち悪いが、ここを変えても変化はなかった。
    2番目のarr.pushも気持ち悪いが、arr.length = 10201で
    ランダムの最大とも一致するから間違ってないだろう。

    > for (i = 0; i < 100000; i++) {
    この100000はサンプル数だろう。単純に10倍したら結果も10倍になった。
    j * 4 / 100000 の 100000と同じであれば数が多ければなんでも良さそうだ。

    で最期に怪しかったのが、
    > if (crd() < 2500) {
    2500という数字で2500というのは50 * 50 だが
    これは51 * 50 = 2550ではないのかね?

    と思って変えてみたら、それらしくなったぞw

    相変わらず数学的な意味はさっぱりわからんが(笑)
    コードの一貫性における違和感のみからバグ取りしてみた。
    91 : 86 - 2014/11/08(土) 20:46:12.07 ID:???.net (+47,+29,+0)
    >>89
    そう、まさにそれ
    92 : Name_Not - 2014/11/08(土) 21:44:59.37 ID:/Hj0O7lg.net (-14,+30,-91)
    >>90
    確かにその違和感は自分でも感じた
    でも理論的には間違っていない・・・はず

    円周率を求めると言う課題は89のコードでクリアしたから
    あとは何故このコードが上手く動かないかだけ
    すっきりしたい

    半径50の円を描いていることになるから2500で
    間違いないはずなんだけどな
    少しそこんとこ突き詰めて考えてみるか
    93 : Name_Not - 2014/11/09(日) 00:14:46.45 ID:???.net (+0,-28,-14)
    3.1454ってなるじゃん。ただの誤差だよ
    95 : Name_Not - 2014/11/09(日) 07:15:53.95 ID:???.net (+20,+29,-21)
    >>94
    これ、ループでランダムに要素をとる意味が全くないぞ
    まずはプログラミングじゃなくて数学の勉強しろ
    97 : Name_Not - 2014/11/09(日) 09:10:59.68 ID:BwBDaWrA.net (-27,+27,-3)
    総当り法ってことかな
    98 : Name_Not - 2014/11/09(日) 11:32:27.96 ID:???.net (+55,+27,-12)
    いまだにinnerHTML使ってる奴見ると吐き気がする
    99 : Name_Not - 2014/11/09(日) 11:46:31.07 ID:???.net (+57,+29,-24)
    場合によると思うけどね
    jQueryにも使われてるし、仕様に書かれているくらいだし
    100 : Name_Not - 2014/11/09(日) 11:54:41.53 ID:???.net (+61,+29,-19)
    意味不明
    innerHTMLは普通に使っていいっていう結論が出たはずだが?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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