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

みんなの評価 :
レスフィルター : (試験中)
>>845
JavaScriptゆかりならこっちだろう
http://d.hatena.ne.jp/replication/20110615/1308063792
http://efcl.info/2010/0304/res1584/
JavaScriptゆかりならこっちだろう
http://d.hatena.ne.jp/replication/20110615/1308063792
http://efcl.info/2010/0304/res1584/
phpと組み合わせて
onclieck="func(a,b~n)"
と中の引数が1~複数に変わるイベントハンドラを作ったんですが
function func(???){
for(i=1; i<=引数の数)
array[1] =
}
とやる場合どーすればいいんでしょ?
onclieck="func(a,b~n)"
と中の引数が1~複数に変わるイベントハンドラを作ったんですが
function func(???){
for(i=1; i<=引数の数)
array[1] =
}
とやる場合どーすればいいんでしょ?
ごめんなさい、書いてる途中にかきこみしてしまいました
phpと組み合わせて
onclieck="func(a,b~n)"
と中の引数が1~複数に変わるイベントハンドラを作ったんですが
function func(a1,b1~n1){
for(i=1; i<=引数の数; i++)
array[i] =第 i 引数(a1);
}
とやる場合どーすればいいんでしょ?
phpと組み合わせて
onclieck="func(a,b~n)"
と中の引数が1~複数に変わるイベントハンドラを作ったんですが
function func(a1,b1~n1){
for(i=1; i<=引数の数; i++)
array[i] =第 i 引数(a1);
}
とやる場合どーすればいいんでしょ?
function hello(){
alert(arguments) // [1,2,3,4,5,6]
}
hello(1,2,3,4,5,6);
alert(arguments) // [1,2,3,4,5,6]
}
hello(1,2,3,4,5,6);
php関係あるというか
phpでファイル読み込んで、そのファイルの数だけ引数作るという感じです
ファイル数が3個なら
func(a,b,c)
7個なら
func(a,b,c,d,e,f,g)
という具合に
phpでファイル読み込んで、そのファイルの数だけ引数作るという感じです
ファイル数が3個なら
func(a,b,c)
7個なら
func(a,b,c,d,e,f,g)
という具合に
>>852
array[1] = a1;
array[2] = b1;
array[3] = c1;
…
array[n] = n1;
ってこと?
function func() {
var x = array[0];
array = [];
Array.prototype.push.apply(array, arguments);
array.unshift(x);
}
array[1] = a1;
array[2] = b1;
array[3] = c1;
…
array[n] = n1;
ってこと?
function func() {
var x = array[0];
array = [];
Array.prototype.push.apply(array, arguments);
array.unshift(x);
}
>>857
それは心の底から思うが、言われて直せるなら最初からこんな設計してないw
それは心の底から思うが、言われて直せるなら最初からこんな設計してないw
>>854
argumentsは配列とちゃうぞ
argumentsは配列とちゃうぞ
おっと、微妙に無駄なことしてたな。
function func() {
array = [array[0]];
Array.prototype.push.apply(array, arguments);
}
function func() {
array = [array[0]];
Array.prototype.push.apply(array, arguments);
}
今ひらめいた
a,b,c,d,e~をさいっその事
a/b/c/d/e~って一つにしちゃって
それを/でスプリットすればいいんじゃね?
そーすりゃarray.lengthで数取り出してarray[1]で値も取り出せる
a,b,c,d,e~をさいっその事
a/b/c/d/e~って一つにしちゃって
それを/でスプリットすればいいんじゃね?
そーすりゃarray.lengthで数取り出してarray[1]で値も取り出せる
>>862
普通、PHPでJavaScriptのコード吐くなら、最初からJavaScriptで読めるデータ作る。
つまり
var arr = [ a1, b1 c1, ... n1 ];
↑この一行をPHPで吐くようにしてる。
わざわざ引数することも1つの文字列にすることもない。てかそんな発想普通出てこないw
普通、PHPでJavaScriptのコード吐くなら、最初からJavaScriptで読めるデータ作る。
つまり
var arr = [ a1, b1 c1, ... n1 ];
↑この一行をPHPで吐くようにしてる。
わざわざ引数することも1つの文字列にすることもない。てかそんな発想普通出てこないw
>>861
Array.prototype.slice.call(arguments);
Array.prototype.slice.call(arguments);
C++等にあるような、インスタンスを作らずに「クラス名.変数名」のような感じでアクセスできる
クラスstatic変数を作りたいのですが、prototype内に変数を作って「クラス名.prototype.変数名」とする以外の手が今のところ見つかりません
これ以外に効果的な方法ってありますでしょうか?
クラスstatic変数を作りたいのですが、prototype内に変数を作って「クラス名.prototype.変数名」とする以外の手が今のところ見つかりません
これ以外に効果的な方法ってありますでしょうか?
C++はClassベースのオブジェクト指向言語で、JavaScriptはPrototypeベース。
全く別物
全く別物
<script>
var x = 0;
function testEvent(e){
console.log(e);
x++;
e.target.style.left += (x + "px");
setTimeout("testEvent('" + e + "')",100);
}
window.onload = function(){
var hoge = document.getElementById("hogehoge");
hoge.style.position = "absolute";
hoge.addEventListener("click", testEvent, false);
}
</script>
<div id="hogehoge">hogehoge</div>
hogehogeという文字をクリックすると、それが画面右にものすごい勢いで移動していくスクリプトを作りたかったのですが、うまくいきませんでした。
調べてみたところ、setTimeoutでtestEventを呼び出したときに、イベントオブジェクト(e)を渡すのに失敗していました。
e.target.style.left += (x + "px");の部分でe.targetがundefinedだと怒られました。
console.logの結果を見てみると、clickイベントで呼び出されたtestEventの引数にはちゃんとMouseEventが渡されていて
targetなどのプロパティを持っていることを確認できましたが
setTimeoutで呼び出された場合は [object MouseEvent] とだけ出力されており、その中身は何もないという状態です。
clickイベントによって渡されるイベントオブジェクトを使いまわすことはできないのでしょうか?
var x = 0;
function testEvent(e){
console.log(e);
x++;
e.target.style.left += (x + "px");
setTimeout("testEvent('" + e + "')",100);
}
window.onload = function(){
var hoge = document.getElementById("hogehoge");
hoge.style.position = "absolute";
hoge.addEventListener("click", testEvent, false);
}
</script>
<div id="hogehoge">hogehoge</div>
hogehogeという文字をクリックすると、それが画面右にものすごい勢いで移動していくスクリプトを作りたかったのですが、うまくいきませんでした。
調べてみたところ、setTimeoutでtestEventを呼び出したときに、イベントオブジェクト(e)を渡すのに失敗していました。
e.target.style.left += (x + "px");の部分でe.targetがundefinedだと怒られました。
console.logの結果を見てみると、clickイベントで呼び出されたtestEventの引数にはちゃんとMouseEventが渡されていて
targetなどのプロパティを持っていることを確認できましたが
setTimeoutで呼び出された場合は [object MouseEvent] とだけ出力されており、その中身は何もないという状態です。
clickイベントによって渡されるイベントオブジェクトを使いまわすことはできないのでしょうか?
setTimeout(function(){
testEvent(e);
},100);
にしたらどうかな
ちなみにsetTimeoutには文字列を渡さないようにしよう
eval的な理由で
testEvent(e);
},100);
にしたらどうかな
ちなみにsetTimeoutには文字列を渡さないようにしよう
eval的な理由で
"testEvent('" + e + "')"
これに何が入るかちょっと考えたらわかるよね
これに何が入るかちょっと考えたらわかるよね
setTimeout("testEvent('" + e + "')",100);
の部分はsettimeoutの内部でeval的な事をしているのですね
色々と理解できました。ありがとうございます。
の部分はsettimeoutの内部でeval的な事をしているのですね
色々と理解できました。ありがとうございます。
スタイルをまとめて追加するのに、style要素を作ってそこにテキストを入れる方法ではだめなんですか?
スタイルを操作するインターフェイスが用意されているのには理由があるんですか?
insertRuleとかaddRuleとか難しくてよくわかりません
スタイルを操作するインターフェイスが用意されているのには理由があるんですか?
insertRuleとかaddRuleとか難しくてよくわかりません
ユーザの入力値に変な値(制御文字)が紛れ込むのを防ぐために、
str = str.replace( /[\x00-\x1F]/g, "" );
とするのは有効でしょうか?
改行コードも含めて制御コードを丸ごと消したいです。
str = str.replace( /[\x00-\x1F]/g, "" );
とするのは有効でしょうか?
改行コードも含めて制御コードを丸ごと消したいです。
何に対して有効なのかが分からないとねえ
クライアントサイドで完結してるなら意味はあるけど
サーバーサイドで処理するためなら全くの無意味
クライアントサイドで完結してるなら意味はあるけど
サーバーサイドで処理するためなら全くの無意味
var node = document.getElementById("hoge");
var clone = node.cloneNode(true);
//cloneへの処理
node.parentNode.replaceChild(node, clone);
何箇所も書き換える場合はクローンノードを作ってそっちで書き換えてから
出来上がったものを一回で差し替えたほうがいいらしいのでやってみたのですが
処理自体が多いので結局差し替えるまでの間待たされてその間操作ができません
「//cloneへの処理」を見直す以外に何かいい方法とかありますか?
定番のやり方とかあれば教えてください
var clone = node.cloneNode(true);
//cloneへの処理
node.parentNode.replaceChild(node, clone);
何箇所も書き換える場合はクローンノードを作ってそっちで書き換えてから
出来上がったものを一回で差し替えたほうがいいらしいのでやってみたのですが
処理自体が多いので結局差し替えるまでの間待たされてその間操作ができません
「//cloneへの処理」を見直す以外に何かいい方法とかありますか?
定番のやり方とかあれば教えてください
>>885
ページ上にもともとあるノード(実際にはその子孫ノード)に対して何箇所も書き加えるので
ベースとなる元のやつを複製したほうが楽だなと思ったのですがフラグメント内に自前で構築するのですか?
それともクローンノードをいったんフラグメントに入れておくんですか?
cloneNodeで複製されたものは元のドキュメントから切り離されるらしいのでフラグメントと同じようなものだと思ってました
ページ上にもともとあるノード(実際にはその子孫ノード)に対して何箇所も書き加えるので
ベースとなる元のやつを複製したほうが楽だなと思ったのですがフラグメント内に自前で構築するのですか?
それともクローンノードをいったんフラグメントに入れておくんですか?
cloneNodeで複製されたものは元のドキュメントから切り離されるらしいのでフラグメントと同じようなものだと思ってました
Rangeを使えるなら
range.selectNodeContents(ul);
var df = range.extractContents();
dfの子になっているliを加工した後
ul.appendChild(df);
この場合cloneNodeは使うな
ulのイベントリスナーが消える
range.selectNodeContents(ul);
var df = range.extractContents();
dfの子になっているliを加工した後
ul.appendChild(df);
この場合cloneNodeは使うな
ulのイベントリスナーが消える
>>888
DocumentFlagmentはただのコンテナで合ってる。ドキュメントのノードを丸ごとcloneNodeして
DocumentFlagmentに入れて操作して、最後に入れ替える、でおk。
処理があまりに遅くて、ブラウザの反応が悪くなりすぎるのであれば
処理の途中でブラウザが処理するタイミングを作るという手がある。
小手先のごまかしだから、処理そのものの改善は前提だし、
ブラウザの処理中に別のイベントが発生した場合の対処とか、一気に複雑になるけど。
// 元処理
function func() {
/* 処理1 */
/* 処理2 */
/* 処理3 */
}
// 途中でブラウザに処理を渡すパターン
function func() {
setTimeout(f1, 0);
function f1(){ /* 処理1 */ setTimeout(f2, 0); }
function f2(){ /* 処理2 */ setTimeout(f3, 0); }
function f3(){ /* 処理3 */ }
}
DocumentFlagmentはただのコンテナで合ってる。ドキュメントのノードを丸ごとcloneNodeして
DocumentFlagmentに入れて操作して、最後に入れ替える、でおk。
処理があまりに遅くて、ブラウザの反応が悪くなりすぎるのであれば
処理の途中でブラウザが処理するタイミングを作るという手がある。
小手先のごまかしだから、処理そのものの改善は前提だし、
ブラウザの処理中に別のイベントが発生した場合の対処とか、一気に複雑になるけど。
// 元処理
function func() {
/* 処理1 */
/* 処理2 */
/* 処理3 */
}
// 途中でブラウザに処理を渡すパターン
function func() {
setTimeout(f1, 0);
function f1(){ /* 処理1 */ setTimeout(f2, 0); }
function f2(){ /* 処理2 */ setTimeout(f3, 0); }
function f3(){ /* 処理3 */ }
}
>>893
その理解でいいんだけど非同期処理は処理が衝突する可能性があるから衝突してはいけない処理は独自にロックする機構が必要だよ
その理解でいいんだけど非同期処理は処理が衝突する可能性があるから衝突してはいけない処理は独自にロックする機構が必要だよ
>>886
このスレはともかく、板全体で見たらヒドいてw
このスレはともかく、板全体で見たらヒドいてw
setTimeoutに衝突の心配なんてあったっけ?
順番通り実行されるロジックがあれば大丈夫だろ
順番通り実行されるロジックがあれば大丈夫だろ



類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.84 + (1001) - [97%] - 2011/3/30 7:32
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.77 + (1001) - [97%] - 2010/5/8 19:06
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.80 + (1001) - [97%] - 2010/11/9 2:17
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.107 + (1001) - [95%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.117 + (1009) - [95%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.137 + (1003) - [95%] - 2019/3/26 11:46
- + JavaScript の質問用スレッド vol.127 + (1001) - [95%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [95%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.94 + (1001) - [95%] - 2012/1/8 15:46
トップメニューへ / →のくす牧場書庫について