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

みんなの評価 :
レスフィルター : (試験中)
>>149
cloneNode使え
cloneNode使え
それなら1個のTextのdataへの代入と比較するのが筋だろうよ
HTMLタグ解析全然やってないんだからな
比較条件が全然違うのを平気でやらかしてるのは、結局
お前自身が普段どういうコードを書いてるかを晒してるに過ぎん
HTMLタグ解析全然やってないんだからな
比較条件が全然違うのを平気でやらかしてるのは、結局
お前自身が普段どういうコードを書いてるかを晒してるに過ぎん
var test1 = function(root, num) {
var doc = document;
var fragment = doc.createDocumentFragment();
for (var i = 0; i < num; i++) {
fragment.appendChild(doc.createTextNode(i));
}
root.appendChild(fragment);
return root;
};
var test2 = function(root, num) {
var innerHTML = root.innerHTML;
for (var i = 0; i < num; i++) {
innerHTML += i;
}
root.innerHTML = innerHTML;
return root;
};
var num = 10000;
var elm = document.body; // bodyに適当にHTML書いとく
console.time(1);
var r1 = test1(elm.cloneNode(true), num);
console.timeEnd(1);
console.time(2);
var r2 = test2(elm.cloneNode(true), num);
console.timeEnd(2);
console.log(r1.innerHTML === r2.innerHTML); // 両者の結果が等しいことを確かめる
var doc = document;
var fragment = doc.createDocumentFragment();
for (var i = 0; i < num; i++) {
fragment.appendChild(doc.createTextNode(i));
}
root.appendChild(fragment);
return root;
};
var test2 = function(root, num) {
var innerHTML = root.innerHTML;
for (var i = 0; i < num; i++) {
innerHTML += i;
}
root.innerHTML = innerHTML;
return root;
};
var num = 10000;
var elm = document.body; // bodyに適当にHTML書いとく
console.time(1);
var r1 = test1(elm.cloneNode(true), num);
console.timeEnd(1);
console.time(2);
var r2 = test2(elm.cloneNode(true), num);
console.timeEnd(2);
console.log(r1.innerHTML === r2.innerHTML); // 両者の結果が等しいことを確かめる
>>156
お前もさあ、DOM構造が全然違うってのに気付けよ
お前もさあ、DOM構造が全然違うってのに気付けよ
>>161
書き方勉強させるのに内容まで変えたら爆発しちゃうだろw同じであることが大切なんだよ。
書き方勉強させるのに内容まで変えたら爆発しちゃうだろw同じであることが大切なんだよ。
こりゃなんか俺のせいで荒れてきちまったな
すまん!みんな許してくれ
そして俺はいくら弄ってもいいから俺に免じてみんな仲良くしてくれ!
頼む!!!
すまん!みんな許してくれ
そして俺はいくら弄ってもいいから俺に免じてみんな仲良くしてくれ!
頼む!!!
俺は>124を懲らしめたかっただけなのに
逆にみんなから懲らしめられるとは……
逆にみんなから懲らしめられるとは……
まとめると、innerHTMLは極端に遅くなるようにも書けるし、(条件次第で)DOMより速くなるようにも書ける。
使うケースと書き方次第で結果が全然違うから、一般的にどっちが速いとはいえない。
使うケースと書き方次第で結果が全然違うから、一般的にどっちが速いとはいえない。
>>165
それならこういう比較になるべきじゃないの
for (var i=0; i < 10000; i++) { d.body.innerHTML += i; } // 逐次処理
for (var i=0; i < 10000; i++) { bi += i; }
d.body.innerHTML += bi; // innerHTMLで一括処理
一括処理だけinnerHTMLにして逐次処理はappendChildにするテストに意味がない
それならこういう比較になるべきじゃないの
for (var i=0; i < 10000; i++) { d.body.innerHTML += i; } // 逐次処理
for (var i=0; i < 10000; i++) { bi += i; }
d.body.innerHTML += bi; // innerHTMLで一括処理
一括処理だけinnerHTMLにして逐次処理はappendChildにするテストに意味がない
APIの機能差をテストするつもりで
プログラマの能力差をテストしているという罠
プログラマの能力差をテストしているという罠
お昼寝して起きたらなんか進んでてワロタw
ごめんごめん、俺はinnnerHTMLとappendの違いを説明したかっただけや
ごめんごめん、俺はinnnerHTMLとappendの違いを説明したかっただけや
すいません
<div>
<div class="a10"></div>
<div class="a5"></div>
<div class="a2"></div>
<div class="a9"></div>
<div class="a1"></div>
<div class="a8"></div>
<div class="a4"></div>
<div class="a3"></div>
<div class="a7"></div>
<div class="a6"></div>
</div>
このように並んである要素をソートしてa1~a10に整列させる良い方法を伝授してください
<div>
<div class="a10"></div>
<div class="a5"></div>
<div class="a2"></div>
<div class="a9"></div>
<div class="a1"></div>
<div class="a8"></div>
<div class="a4"></div>
<div class="a3"></div>
<div class="a7"></div>
<div class="a6"></div>
</div>
このように並んである要素をソートしてa1~a10に整列させる良い方法を伝授してください
試してないけどこんな感じ
BIGDIV.childNodes.sort(function (a,b){
return b.firstChild.className.match(/\d/)-a.firstChild.className.match(/\d/);
})
BIGDIV.childNodes.sort(function (a,b){
return b.firstChild.className.match(/\d/)-a.firstChild.className.match(/\d/);
})
>>184 sort使ってやれよ
idだと出来るが、classだとわかんねぇな
ソートしたいやつにclass="a10 hoge"
ってやってくれればやりやすいが
ソートしたいやつにclass="a10 hoge"
ってやってくれればやりやすいが
>>186
指摘するぐらいなら書いてやれよ
指摘するぐらいなら書いてやれよ
Node-Listを直接ソートするって大胆すぎ
var div = $("div:first"); // <div> jQuery
var inner = Array.prototype.slice.call(div[0].childNodes); // <div.a1>....<adiv.aN>
inner.sort(function(a, b) {
return b.className.replace(/[^\d]/,"") - a.className.replace(/[^\d]/,"");
});
for(var i = 0; i < inner.length; i++) {
div.append(inner[i]);
}
var div = $("div:first"); // <div> jQuery
var inner = Array.prototype.slice.call(div[0].childNodes); // <div.a1>....<adiv.aN>
inner.sort(function(a, b) {
return b.className.replace(/[^\d]/,"") - a.className.replace(/[^\d]/,"");
});
for(var i = 0; i < inner.length; i++) {
div.append(inner[i]);
}
>>184
それが一番いいと思いますがそれができないのです
それが一番いいと思いますがそれができないのです
出来ないのはそういう風に利用するAPIが吐くから質問させていただきました
>>183に書いた要素をソートしたいだけで別の方法を模索したいわけではないのですよ
>>193
そう思うなら速いコードを書いてやれよ
そう思うなら速いコードを書いてやれよ
>>183
classということは他にもclass="a1"があるんだよね
この状況でどうやって要素を特定しようとしてる?
親要素にidでも振ってあるなら話はわかるけどスマートな方法は今のところない
あと、APIが吐くじゃあどのような制限があるか全く伝わらない
classということは他にもclass="a1"があるんだよね
この状況でどうやって要素を特定しようとしてる?
親要素にidでも振ってあるなら話はわかるけどスマートな方法は今のところない
あと、APIが吐くじゃあどのような制限があるか全く伝わらない
「遅いはずだ」とか、「メモリリークするかも」とかって実際に起きてるわけでもなく、想像で話すとロクなことにならない。
体感的に遅かったら高速化すればいいし、メモリリークしたら直せば良い。
想像で議論してもまともな結論がでるはずもなく、無駄でしかない。他にやることがあるだろ。
あと、(不毛な)議論自体がしたいヤツがいるから、そういうのはスルーするしかないね。
体感的に遅かったら高速化すればいいし、メモリリークしたら直せば良い。
想像で議論してもまともな結論がでるはずもなく、無駄でしかない。他にやることがあるだろ。
あと、(不毛な)議論自体がしたいヤツがいるから、そういうのはスルーするしかないね。
>>189
childNode だとテキストノードもまじってくる。それの対処を。
あと、IEだとArray.prototype.slice.call(Nodeリスト)がつかえないんだよね。
jQueryつかってるんだから、$.makeArrayがいいとおもう。IE無視ならそのままでOK。
んで、それ直したらいけたよ。
まあ、逆順になったけどな。
childNode だとテキストノードもまじってくる。それの対処を。
あと、IEだとArray.prototype.slice.call(Nodeリスト)がつかえないんだよね。
jQueryつかってるんだから、$.makeArrayがいいとおもう。IE無視ならそのままでOK。
んで、それ直したらいけたよ。
まあ、逆順になったけどな。
サンプル書いてみた
http://jsfiddle.net/SC3Bx/
>>198
「sortの効率が悪い」といったのは最終的にappendChildするなら二度手間になると思ったから
>>186が「sort使ってやれよ」と指摘した理由が見つけられなかった
どのような書き方をするかは各々の自由だと思うし、「~してやれよ」系はスルーでいいのかもしれないな
http://jsfiddle.net/SC3Bx/
>>198
「sortの効率が悪い」といったのは最終的にappendChildするなら二度手間になると思ったから
>>186が「sort使ってやれよ」と指摘した理由が見つけられなかった
どのような書き方をするかは各々の自由だと思うし、「~してやれよ」系はスルーでいいのかもしれないな



類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.84 + (1001) - [97%] - 2011/3/30 7:32
- + JavaScript の質問用スレッド vol.74 + (1001) - [97%] - 2009/12/1 6:08 ○
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.96 + (1001) - [97%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.95 + (1001) - [97%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.93 + (1001) - [97%] - 2012/1/1 4:46
- + JavaScript の質問用スレッド vol.93 + (1001) - [97%] - 2011/12/10 18:31
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.114 + (1001) - [95%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.142 + (984) - [95%] - 2020/8/27 19:15
- + JavaScript の質問用スレッド vol.124 + (1001) - [95%] - 2015/7/16 1:30
- + JavaScript の質問用スレッド vol.104 + (1001) - [95%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.142 + (926) - [95%] - 2019/12/23 13:15
トップメニューへ / →のくす牧場書庫について