私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.121 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>45
では、面倒くさいが、
span[style="color:red"], span[style="color: red"], span[style="color : red"], span[style="color:#f00;"], span[style="color: #f00"]
のようにホワイトスペースやカンマの有無の全ての組み合わせを , 区切りで宣言しろ
ブラウザがstyle属性値をどのような書式で持つかは実装依存
ブラウザがバージョンアップして挙動が変更することも考えられるので必ず「全てのパターン」を宣言しろ
では、面倒くさいが、
span[style="color:red"], span[style="color: red"], span[style="color : red"], span[style="color:#f00;"], span[style="color: #f00"]
のようにホワイトスペースやカンマの有無の全ての組み合わせを , 区切りで宣言しろ
ブラウザがstyle属性値をどのような書式で持つかは実装依存
ブラウザがバージョンアップして挙動が変更することも考えられるので必ず「全てのパターン」を宣言しろ
>>51
それだと関数内の var で a が新たに宣言されてしまうので不可
var a = "test";
(function(){
var a = a || []; // 関数外の宣言に関わらず [] が代入される
})();
それだと関数内の var で a が新たに宣言されてしまうので不可
var a = "test";
(function(){
var a = a || []; // 関数外の宣言に関わらず [] が代入される
})();
あと、その条件なら普通にグローバルコードで宣言しろよ、と思うね
var a = a || [];
var a = a || [];
>>39はhttp://peace.2ch.net/test/read.cgi/hp/1415213701/23n のコピペだからここで回答するだけ無駄
>>42
document.querySelector('span[style="color: red;"]')
ただしこっちの方が安定的
Array.prototype.filter.call(document.querySelectorAll("span"), function(e){ return e.style.color == "red;" })[0]
document.querySelector('span[style="color: red;"]')
ただしこっちの方が安定的
Array.prototype.filter.call(document.querySelectorAll("span"), function(e){ return e.style.color == "red;" })[0]
querySelectorの第2引数の情報MDNに乗ってなかったよく知ってるな
>>64
いやですw
いやですw
>>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 = ... で値を設定したときについては
どうも書かれてないみたい
>どういう風に変換するのかは、仕様で決まってるのかな?
要素 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 = ... で値を設定したときについては
どうも書かれてないみたい
>>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 を取るほうがまだマシだな
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 を取るほうがまだマシだな
>70に付け加えるなら「color: #f00, color: #ff0000, color: red, color: rgb(255, 0, 0)」のパターンもある
ホワイトスペースや ; の組み合わせパターンも考えると、かなり大変だな
ナンセンスな実装には違いない
ホワイトスペースや ; の組み合わせパターンも考えると、かなり大変だな
ナンセンスな実装には違いない
function abc(){
var result = aaaa();
result.ok = function(e){
~
}
}
って書くのと
function ok(){
~
}
function abc(){
var result = aaaa();
result.ok = ok;
}
}
って書くのどっちがメモリにやさしいですか?
前者はabc()を呼ぶたびに中の無名関数が生成されていってメモリの無駄になる気がするんですが
var result = aaaa();
result.ok = function(e){
~
}
}
って書くのと
function ok(){
~
}
function abc(){
var result = aaaa();
result.ok = ok;
}
}
って書くのどっちがメモリにやさしいですか?
前者はabc()を呼ぶたびに中の無名関数が生成されていってメモリの無駄になる気がするんですが
なんかあっちはわざと?くだらない話ばかりして
グダグダしてるから、こっちにまともな答え書いておくわ。
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 なので明らかに間違い。
グダグダしてるから、こっちにまともな答え書いておくわ。
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 なので明らかに間違い。
こっちもぐだぐだ感あふれてるわ
さっきはあっちのスレにたまたま人が多かっただけで何も変わらん
さっきはあっちのスレにたまたま人が多かっただけで何も変わらん
>>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未満の浮動小数点数(なるべく小数点以下が多い数)を
返すのは、ある範囲の整数を返すときに必要な「任意の数をかける」時に
問題ないようにするためなんだよ。
君が言ってる隔たりの原因は精度が低いから。
>例えばさ、乱数が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未満の浮動小数点数(なるべく小数点以下が多い数)を
返すのは、ある範囲の整数を返すときに必要な「任意の数をかける」時に
問題ないようにするためなんだよ。
君が言ってる隔たりの原因は精度が低いから。
>>77
なんで始まってからすぐグダグダになるんだよw
なんで始まってからすぐグダグダになるんだよw
>>78
うん、ありがとう
うん、ありがとう
> 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…ずつで、
ちょうど同じ数なんだよなね。
> 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…ずつで、
ちょうど同じ数なんだよなね。
>>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 の場合は自分が動かす分で動作すればいいだけなので、自分の環境で動くものを回答レスから適当に拾えばいい。長文すまん
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 の場合は自分が動かす分で動作すればいいだけなので、自分の環境で動くものを回答レスから適当に拾えばいい。長文すまん
>>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);
そのコードが何をやってるのかさっぱりわからんけど
(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);
>>81
初めから10201個の点の位置を決めている、というのがナンセンス
この時点で π の正確な値は出せない
極端な例で言うと、3x3の9個の点だと、中央の1点しか円の内側にないでしょ?
改善する方法は、点の位置を毎回ランダムに決めること
頑張れば100文字ぐらいでコード書けるよ
初めから10201個の点の位置を決めている、というのがナンセンス
この時点で π の正確な値は出せない
極端な例で言うと、3x3の9個の点だと、中央の1点しか円の内側にないでしょ?
改善する方法は、点の位置を毎回ランダムに決めること
頑張れば100文字ぐらいでコード書けるよ
>>85
うーん、点の個数が少ないのかな?
うーん、点の個数が少ないのかな?
> 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
相変わらず数学的な意味はさっぱりわからんが(笑)
コードの一貫性における違和感のみからバグ取りしてみた。
> 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
相変わらず数学的な意味はさっぱりわからんが(笑)
コードの一貫性における違和感のみからバグ取りしてみた。
>>90
確かにその違和感は自分でも感じた
でも理論的には間違っていない・・・はず
円周率を求めると言う課題は89のコードでクリアしたから
あとは何故このコードが上手く動かないかだけ
すっきりしたい
半径50の円を描いていることになるから2500で
間違いないはずなんだけどな
少しそこんとこ突き詰めて考えてみるか
確かにその違和感は自分でも感じた
でも理論的には間違っていない・・・はず
円周率を求めると言う課題は89のコードでクリアしたから
あとは何故このコードが上手く動かないかだけ
すっきりしたい
半径50の円を描いていることになるから2500で
間違いないはずなんだけどな
少しそこんとこ突き詰めて考えてみるか
場合によると思うけどね
jQueryにも使われてるし、仕様に書かれているくらいだし
jQueryにも使われてるし、仕様に書かれているくらいだし
意味不明
innerHTMLは普通に使っていいっていう結論が出たはずだが?
innerHTMLは普通に使っていいっていう結論が出たはずだが?
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.121 + (1001) - [100%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.141 + (881) - [97%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.120 + (1002) - [97%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.122 + (1004) - [97%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.122 + (116) - [97%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.128 + (1001) - [97%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.123 + (966) - [97%] - 2020/10/20 2:30
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.126 + (952) - [97%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.126 + (348) - [97%] - 2023/1/12 17:00
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.123 + (1002) - [97%] - 2015/4/27 23:30
トップメニューへ / →のくす牧場書庫について