元スレ+ JavaScript の質問用スレッド vol.80 +
JavaScript覧 / PC版 /みんなの評価 :
301 = :
>>300
ここってID出さないとダメなんですか?>>1は読みましたけど
303 = :
なかなかいいギャグ
304 = :
評価する。
306 = :
JPEGとかのEXIFの情報を表示したくてExifUtil.jshttp://acapulco.dyndns.org/exifutil/ 使おうと
思ってるんですが、上手くいきません。
原因調べるにはどうすればよいのでしょうか?
307 :
>>306
はー、JSでバイナリファイル読むなんてかっちょいいな!
原因は作者に聞けば。幸い日本人みたいだし。
自分でソースを追って、誤りがあれば訂正して送ってあげるのが
利用者のあるべき姿な気はするが。
308 = :
>>306
作者と同じサンプルでだめなら作者に質問すれば
そうじゃなきゃ設置ミスでしょ
firebugとかそこらへんで自分が書いたコードをブレイクすればいい
309 = :
>>300 >>305
ありがとうございます。
この方法ですと、初回checkedはイベントで拾えるのですが、
一度選択すると、二回目以降は拾えないんですよね…。
確かに id="hoge1" は value="1" に設定されたので
二回目に選択しなおしても変化がない…という判定にされるのは分かるのですが。
311 = :
>>310
alert(j)にしたら原因が分かるんじゃないかな
var nl = document.getElementsByTagName('a');
var n;
for (var i = 0; n = nl[i]; ++i) {
n.onmouseover = (function (count) {
return function () {
alert(count);
};
})(i);
}
312 = :
>>310
わかりません。なのにコードの最後は動くってどういうこと?
for で数字が変わっていってどの要素でも最後の数しか認識しない場合は
関数でくるんでやるの>>311をよくやるんだけど、他になんか良い方法ってある?
313 = :
>>312
JSの変数は関数スコープ
変数jがどこで宣言されているか(どこに属するか)を考えてみれ
314 = :
>for (var j = 0; j < aEL.length; j++) {
>aEL[j].onmouseover = function() {
>alert(aCNT[j]); ←jだと動かないが数字を入れると動く
そりゃうごかねえよalertの行の時点で j の中に数字ははいってないもん
理由は相棒の>>313参照
315 = :
>>313
俺は>>310の何が問題かは理解してるよ?
過去にこれではまったことがあって、その時は無名関数でくくって実行ってのをやったんだ。
他にも回避のための手段あるなら知りたいなって思って312を書いた。
>>314
ちょっとちがくね?alert(j);なら4返してくれる。
jはforが回り終わったあとのだから、常に4が入ってる。
aELは長さ4だから(ここも正しくはないが)、5番目の[4]はundefined
316 = :
クロージャーを使おうとして失敗する例の
よく有るパターンですねわかります
319 = :
>>318
ちょww 一応>>312の1行目の文について言い訳しておく。
「わかりません。」と書いているのに「j【alert(j)】だと動かないが数字【を返すはずのaCNT[j]】を入れると動く」ってのはどういう事
【】内だと勘違いして、動いているのにわかりませんって言っているように見えたんだ。sマン
>>317
さんくす。IEだとforが糞だから後者のほうが良さそうですね。
321 = :
>>312
with ({j;j}) { .... } 良い方法かどうかは知らない
あとこの例には当てはまらないけど、マウスオーバーされた要素に対して
何かしたいとかだったら単にthisでいい
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0005?page=2
323 = :
絞り込み検索の様なものを作成したいと思っています。
複数のプルダウンメニューから選択して検索ボタンをクリック、
該当するデータをリスト化(<ul><li>~</li><li>~</li>・・</ul>)して
htmlに出力するような事をしたいんですが、javascriptで可能でしょうか。
データはxmlで管理するのがよいかなと考えているので、
jqueryでxmlを読み込んで、該当するデータだけを出力、
ってな感じの流れを想定しているんですが。。
324 = :
余裕ですよ
325 = :
>>323
可能
326 = :
>>320
それはもう修正されてる…
http://support.microsoft.com/kb/929874/ja/
328 = :
なにそのきんもーい書き方
JavaScriptおそろしいね
329 = :
無名関数で追加したイベントって除去できるの?
330 = :
>>329
できる
item.addEventListener('mouseover', function (evt) {
item.remoceEventListener('mouseover', arguments.callee, false);
}, false);
331 = :
removeがremoceになってるのはおいといて
イベント発生させないとだめなのか
それはそれでどうなの
332 = :
>>326
ありがとう。
IE6SP3 で修正されたのは知っていたんですが、今でもリークパターンの指摘を受けるのでまだ対応すべきと認識していました。(>>4 でもメモリリークに触れられていたり)
実際のところ、今はリークパターンを考慮しない人が大半なのかな…。
333 = :
>>331
どんな方法であれ、addEventListener 時に指定した関数オブジェクトを指定できれば、removeEventListener できる。
名前付き関数を使えない理由は何なの?
334 = :
>>328
ES5でもブロックスコープは定義されなかったからね・・・
letが使えればもっとスマートに書けるんだけど、クロスブラウザ不可
>>330
callee、将来的にはどうなるか不透明すぎるのだけがネック
Strict ModeだとTypeError投げるようになる(実装してる処理系ないけど)
あとはYコンビネータ実装してゴニョるとか
335 = :
>>333
レスへのレスにレスしてるだから気にしないで
336 = :
二次元配列の一部を共有するような配列って作れますか?
具体的には
var board = new Array(); /* データを入れる */
var boardinner = new Array(); /* boardのデータの真ん中部分を入れる */
この時、配列の中身のデータは共有されてて
boardinner[1][2]=10とかやると、board[2][3]も10になり
board[2][3]=20とやるとboardinner[1][2]も20になるような感じです。
今テトリスを作ってて、ブロックが落ちてつもるところまではできて、
これから行を消すコードを入れる段階なのですが
壁も含んだボードなので、壁を含まないboardinnerみたいなのが作れると
記述がシンプルになるなと思ったのですが
思うように作れません
337 = :
class Test
var str = "xxx";
function a(){
return "[" + this.str + "]";
}
function b(){
return "<" + this.str + ">";
}
こんな感じにクラスで書きたいんですけど方法ありませんか?
338 = :
var Test = function() {
};
Test.prototype = {
str: "xxx",
a: function() {
return "[" + this.str + "]";
},
b: function() {
return "<" + this.str + ">";
}
}
339 = :
こんな感じで書いてください。クラスとかそういうものはありません。
クラスやらインターフェースやらの導入が計画されていた時期もありましたが、お流れになりました。
var Test = function () {
// 初期化処理
};
Test.prototype = {
str: "xxx",
a: function() { return "[" + this.str + "]" },
b: function() { "<" + this.str + ">" }
};
使い方
var test = new Test();
alert(test.a()); // => "[xxx]"
340 = :
カップルになるべき
341 = :
ある場所Aからある場所Bまでの間の、リンクを押すと新しいウィンドウにするという仕組みにしたいのです。
AとBの間ではJSで外のデータを読み込んでいるのですが、そこのリンクを新しいウィンドウで表示させたいのです。
自分のサーバーの中のデータではないので、改造できないのです・・
ヘッド内に<base>を使うと、ページ全体になってしまうし
AB内のソースもいじれないので、rel="external"もできないし
何か方法はないでしょうか?
344 = :
>>341
全然意味がわからんけど、jsでiframe作成してページ内に貼っていて、
そのフレーム中のリンクをクリックすると新しいウィンドウで開くようにしたいってこと?
345 = :
chromeにて、document.body.clientHeight を使ってブラウザ画面の
縦の長さを取得していますが、ページによっては、
ブラウザの長さを取得できない場合があります。
何か、条件がありますか?
346 = :
doctypeとか表示モードとかかなぁ。
ぐぐったら結構出てきたよ
347 = :
>>346
ありがとうございます。とりあえず、それらの単語でぐぐってみたら
document.documentElement.clientHeight
というのも使える感じです。仕組みはよくわかっていませんが。
350 = :
>>347
マジレスしてあげますがそれは5大ブラウザ全てに対応できないから
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.87 + (1001) - [97%] - 2011/6/21 6:33
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.84 + (1001) - [97%] - 2011/3/30 7:32
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.104 + (1001) - [95%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.103 + (1001) - [95%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.102 + (1001) - [95%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.120 + (1002) - [95%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.101 + (1001) - [95%] - 2012/7/16 14:15
トップメニューへ / →のくす牧場書庫について