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

みんなの評価 :
レスフィルター : (試験中)
>>800
多くの初心者にとって、OSそのものがウィルスになっちゃうなw
多くの初心者にとって、OSそのものがウィルスになっちゃうなw
イカタコウイルスも
avi.exeって注意書きしてるから意図には反してなくね?
もう「これはウイルスです!実行したらHD全消去されます!」とかやっても逮捕されるレベル
avi.exeって注意書きしてるから意図には反してなくね?
もう「これはウイルスです!実行したらHD全消去されます!」とかやっても逮捕されるレベル
6月16日に起きたgoogleのアルゴリズムの変更で何が変わったか。
http://twitter.com/creditcardmiu/status/81112388589453312
http://twitter.com/creditcardmiu/status/81112388589453312
>>806
何も対処しなくていい
何も対処しなくていい
デバッグのためCocProxyでhttpsなサイトにアクセスすると表示できないんですが、どうしたらいいでしょうか…
var a=setInterval(function(){},0);
clearInterval(a-1);
とすると俺の環境では上手くいくww
clearInterval(a-1);
とすると俺の環境では上手くいくww
全部解除したいならそのaから0までwhileあたりで回せばいいんだろうけど
任意の物となるとどうなんだろ
任意の物となるとどうなんだろ
script
function tdclick() {
var td = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < td.length; i++) {
td[i].addEventListener('click', function(){
alert(td[i].textContent);
}, false);
}
}
window.addEventListener('load', tdclick, false);
html
<table border="1" id="tbl">
<tr><th>AA</th><th>BB</th><th>CC</th></tr>
<tr><td>A1</td><td>B1</td><td>C1</td></tr>
<tr><td>A2</td><td>B2</td><td>C2</td></tr>
</table>
td[i]が定義されてないというエラーが出てイベントが登録できません
forで回さずに
td[0].addEventListener('click', function(){
alert(td[0].textContent);
}, false);
td[1].addEventListener('click', function(){
alert(td[1].textContent);
}, false);
このようにすれば登録できるみたいなんですけどどうやって登録するのが正しいのでしょうか?
function tdclick() {
var td = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < td.length; i++) {
td[i].addEventListener('click', function(){
alert(td[i].textContent);
}, false);
}
}
window.addEventListener('load', tdclick, false);
html
<table border="1" id="tbl">
<tr><th>AA</th><th>BB</th><th>CC</th></tr>
<tr><td>A1</td><td>B1</td><td>C1</td></tr>
<tr><td>A2</td><td>B2</td><td>C2</td></tr>
</table>
td[i]が定義されてないというエラーが出てイベントが登録できません
forで回さずに
td[0].addEventListener('click', function(){
alert(td[0].textContent);
}, false);
td[1].addEventListener('click', function(){
alert(td[1].textContent);
}, false);
このようにすれば登録できるみたいなんですけどどうやって登録するのが正しいのでしょうか?
>>815
function tdclick() {
var nodes = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', strAlert(nodes[i].textContent), false);
}
function strAlert(str) {
return function(){ alert(str); };
}
}
window.addEventListener('load', tdclick, false);
iがループで変化してる。どのセルをクリックしても td[6](=存在しない)を参照しようとする。
クロージャ作って必要な値をしっかり切り離して固定しないとダメ。
デバッガ使って、バグった時点のiの値を見れば原因の見当がついたはず。デバッガ覚えること推奨。
function tdclick() {
var nodes = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', strAlert(nodes[i].textContent), false);
}
function strAlert(str) {
return function(){ alert(str); };
}
}
window.addEventListener('load', tdclick, false);
iがループで変化してる。どのセルをクリックしても td[6](=存在しない)を参照しようとする。
クロージャ作って必要な値をしっかり切り離して固定しないとダメ。
デバッガ使って、バグった時点のiの値を見れば原因の見当がついたはず。デバッガ覚えること推奨。
>>815
function tdclick() {
var td = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < td.length; i++)(function(targetTd){
targetTd.addEventListener('click', function(){ alert(targetTd.textContent); }, false);
}(td[i]);
}
window.addEventListener('load', tdclick, false);
多分解決してると思うけど、こういう書き方もある。
function tdclick() {
var td = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < td.length; i++)(function(targetTd){
targetTd.addEventListener('click', function(){ alert(targetTd.textContent); }, false);
}(td[i]);
}
window.addEventListener('load', tdclick, false);
多分解決してると思うけど、こういう書き方もある。
お茶飲んでたらふと思った。
本当にやりたいことってたぶんこういうことだよなw
function tdclick() {
var nodes = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', function(){ alert(this.textContent); }, false);
}
}
本当にやりたいことってたぶんこういうことだよなw
function tdclick() {
var nodes = document.getElementById('tbl').getElementsByTagName('td');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', function(){ alert(this.textContent); }, false);
}
}
>>807
ありがとうございます。
アレはサーバサイドが対処するものなのですか?
XSSはクライアントサイドで対処するもので、
その質問の中で出てきたのでこれもクライアントサイドかと・・・。
ユーザの入力値を、サーバ側のファイル系関数とかに
ノーチェックで入れたりしなければ大丈夫ですよね?
ありがとうございます。
アレはサーバサイドが対処するものなのですか?
XSSはクライアントサイドで対処するもので、
その質問の中で出てきたのでこれもクライアントサイドかと・・・。
ユーザの入力値を、サーバ側のファイル系関数とかに
ノーチェックで入れたりしなければ大丈夫ですよね?
何もできない、が正しいな。
ユーザーの入力データをJavaScriptが受け取る前に、
ブラウザがそれをJavaScriptに渡すように処理するが、
その処理に穴があるとマズいって話。
ユーザーの入力データをJavaScriptが受け取る前に、
ブラウザがそれをJavaScriptに渡すように処理するが、
その処理に穴があるとマズいって話。
解決方法という意味では、どちらもクロージャ使えってことで同じ。
問題の内容としては、ループ内で変化する値を固定したいという話と、
実行時のthisが違うという話は全く別のことだな。
問題の内容としては、ループ内で変化する値を固定したいという話と、
実行時のthisが違うという話は全く別のことだな。
>>818は動かないでしょforの外にあるし
for()(function(){
はコード的にもちょっと気持ち悪い・・・
for () {
(function(hoge){
hoge.addEventListener();
})(td[i]);
}
for()(function(){
はコード的にもちょっと気持ち悪い・・・
for () {
(function(hoge){
hoge.addEventListener();
})(td[i]);
}
>>820はクロージャーなのか?
ループ回さなくてもすむならループ回さない方向で
<html>
<body>
<table border="1" id="tbl">
<tr><th>AA</th><th>BB</th><th>CC</th></tr>
<tr><td>A1</td><td>B1</td><td>C1</td></tr>
<tr><td>A2</td><td>B2</td><td>C2</td></tr>
</table>
<script>
(function(){
document.getElementById("tbl").addEventListener("click",function(event){
if(event.target.nodeName.toLowerCase()==="td"){
alert(event.target.textContent);
}
},false);
})();
</script>
</body>
</html>
<html>
<body>
<table border="1" id="tbl">
<tr><th>AA</th><th>BB</th><th>CC</th></tr>
<tr><td>A1</td><td>B1</td><td>C1</td></tr>
<tr><td>A2</td><td>B2</td><td>C2</td></tr>
</table>
<script>
(function(){
document.getElementById("tbl").addEventListener("click",function(event){
if(event.target.nodeName.toLowerCase()==="td"){
alert(event.target.textContent);
}
},false);
})();
</script>
</body>
</html>
結果が一緒なら動作の意味なんて考えなくてもいい
というスタンスだったがこのままじゃヤバイか
キミらの話難しくてついていけないぜ
というスタンスだったがこのままじゃヤバイか
キミらの話難しくてついていけないぜ
>>831
処理が最も単純なのは>829。これで解決するならこれでいい。
ただ、tableにいろいろ追加・変更したり、腐ったブラウザ(IE8以前とか)に対応させようとすると、
書き換えなきゃいけない部分がいろいろ出てくる。
発想として最も単純なのは>820。変更があるとしても、書き換える部分はそんなに多くないし、
その場合、>829の「イベントは発生するが処理から除外する」という発想よりは
「イベントハンドラをつけない」という発想の方が、たぶん分かりやすい。
問題の本質が「対象のtextContentを特定する」ことではなくて、「 i を固定すること」だった場合、
>829も>820も参考にならない。たとえばtdの数と同じだけの要素数を持った配列が別にあって、
それを各イベントハンドラに対応させようとするなら、>816とかを参考にしてクロージャ作るしかない。
どれが>815にとって本当にちょうどいい回答なのかは、>815の質問だけでは判断し切れない部分があるわけ。
動作の意味がどうこうってはそういうこと。
処理が最も単純なのは>829。これで解決するならこれでいい。
ただ、tableにいろいろ追加・変更したり、腐ったブラウザ(IE8以前とか)に対応させようとすると、
書き換えなきゃいけない部分がいろいろ出てくる。
発想として最も単純なのは>820。変更があるとしても、書き換える部分はそんなに多くないし、
その場合、>829の「イベントは発生するが処理から除外する」という発想よりは
「イベントハンドラをつけない」という発想の方が、たぶん分かりやすい。
問題の本質が「対象のtextContentを特定する」ことではなくて、「 i を固定すること」だった場合、
>829も>820も参考にならない。たとえばtdの数と同じだけの要素数を持った配列が別にあって、
それを各イベントハンドラに対応させようとするなら、>816とかを参考にしてクロージャ作るしかない。
どれが>815にとって本当にちょうどいい回答なのかは、>815の質問だけでは判断し切れない部分があるわけ。
動作の意味がどうこうってはそういうこと。
>>829のはクリック毎に毎回判定する感じなのかな?
効率は悪そうに見えるけどどうなんだろう?
効率は悪そうに見えるけどどうなんだろう?
それぞれどういう関係なんですか
数をたくさん登録してメモリを使うか
広い範囲を指定してバブリング毎に調べてCPUを使うか?
数をたくさん登録してメモリを使うか
広い範囲を指定してバブリング毎に調べてCPUを使うか?
>>829は対象のtd要素ノードが replaceChild されても動きますが、他は動きません。
質問です。
下記サイトを見ながら、画像をマウスオーバーするとプルダウンメニューが出るようにしたのですが、
画像の段が2段になると1段目画像のプルダウンメニューが2段目画像の下に潜ってしまいます。
http://www.css-lecture.com/log/javascript/jquery-droppy-menu.html
http://www.css-lecture.com/template/2009/0622/
<試した環境>
OS: WinXP 32bit SP3
ブラウザ: IE6~8、Firefox3.6、Chrome12.0
webサーバ: 外部のIIS、Apache
IE6~8とIISという組み合わせでのみ問題が出ます。どうしたらいいでしょうか?
下記サイトを見ながら、画像をマウスオーバーするとプルダウンメニューが出るようにしたのですが、
画像の段が2段になると1段目画像のプルダウンメニューが2段目画像の下に潜ってしまいます。
http://www.css-lecture.com/log/javascript/jquery-droppy-menu.html
http://www.css-lecture.com/template/2009/0622/
<試した環境>
OS: WinXP 32bit SP3
ブラウザ: IE6~8、Firefox3.6、Chrome12.0
webサーバ: 外部のIIS、Apache
IE6~8とIISという組み合わせでのみ問題が出ます。どうしたらいいでしょうか?
>>839
上下関係はJavaScript関係ない。CSSのz-index
上下関係はJavaScript関係ない。CSSのz-index
すっごい初歩的な質問なんですが
function a(){}
function b(){}
とあるとき、function bを実行したときfunction bの中でfunction aを実行するにはどうしたらよいのでしょうか?
function a(){}
function b(){}
とあるとき、function bを実行したときfunction bの中でfunction aを実行するにはどうしたらよいのでしょうか?
>>842
ありがとうございます!
ありがとうございます!
>>841
「原理原則」や「机上の空論」を正論と思って賞賛してよいのは中学二年生まで
「原理原則」や「机上の空論」を正論と思って賞賛してよいのは中学二年生まで
みんなこれフォロー
http://d.hatena.ne.jp/sugyan/20110616/1308203734
ここに乗ってるのフォローしてくださいお願いします
お願いですjavascriptのみなさんおねがいです
http://d.hatena.ne.jp/sugyan/20110616/1308203734
ここに乗ってるのフォローしてくださいお願いします
お願いですjavascriptのみなさんおねがいです
使い終わった変数にnullを代入するのはどういう場合にするんですか?常にしたほうがいいんですか?
>>847
理由は2つ。
1つは「あとでその変数を調べることがあって、
その時にnullが入ってることを期待したい」場合。
たとえば処理済みの印代わりとしての意味。
もう1つは「その変数に何らかの参照が入っていて、
別の何かを代入することで参照を切りたい」場合。
もはや使わないオブジェクトの参照を切って、メモリの解放を期待する意味。
このどちらでもないなら不要。
理由は2つ。
1つは「あとでその変数を調べることがあって、
その時にnullが入ってることを期待したい」場合。
たとえば処理済みの印代わりとしての意味。
もう1つは「その変数に何らかの参照が入っていて、
別の何かを代入することで参照を切りたい」場合。
もはや使わないオブジェクトの参照を切って、メモリの解放を期待する意味。
このどちらでもないなら不要。



類似してるかもしれないスレッド
- + 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
トップメニューへ / →のくす牧場書庫について