のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,644,943人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレ+ JavaScript の質問用スレッド vol.113 +

JavaScript覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

902 = :

offsetはbodyが基準になるんですね
親要素との相対位置と思い込んでました
ありがとうございました

904 = :

>>902
まず、思い込む前に offset の機能を調べた方がいい
http://api.jquery.com/offset/
http://developer.mozilla.org/ja/docs/Web/API/element.offsetTop
その癖を直さないと、同じことを何度も繰り返すよ

905 = :

The .offset() method allows us to retrieve the current position of an element relative to the document.

907 = :

JavaScript第六版にかなり詳細な説明がありました
覚えていないということは、ほとんど読み飛ばしたのでしょう
ちゃんと読んでみます
ありがとうございました

908 = :

質問です。http://www.imjfenox.com ここのサイトのlogoがスクロールすると小さくなるのですが、これはどのように書けばよいのでしょうか?
教えて下さい。宜しくお願いします。

909 = :

>>908
http://webdrawer.net/javascript/parallax.html

911 = :

UTF8の「幅なしスペース」をソース中の文字列として記述したいのですが
どうしたら出来るでしょうか

914 = :

>>911
文字参照のとこかね?
ゼロ幅空白は ​

915 = :

ユニコード記述で出来ました
ありがとうございました

916 = :

for in による オブジェクトプロパティーのリストアップについて
ブラウザやnodejsだと、、

var o = {w:10, h:20, func:function(){console.log(this.h);}}
for(var x in o){ console.log(x +":"+ typeof o[x] + " = " + o[x]); }
--->
w:number = 10
h:number = 20
func:function = function (){console.log(this.h);}

このような結果がえられますが、var o = Math だと何も表示されません。
Mathは "グローバル" な "組み込み" オブジェクトだから特別なんでしょうか?
それとも for in ではリストアップできないように指定する方法があるのでしょうか?

917 = :

>>916
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for_each...in

918 = :

Object.getOwnPropertyNames(Math).forEach(function(i){
 console.log(i + ':' + Math[i]);
});

919 = :

Mathプロパティのリストアップ の件、ありがとうございます。
>>917
firefox26 では for each in... 使ってもできませんでした。
nodejsでは for each in... が無いので、とりあえず foreach モジュール、 object-foreach モジュールをインストールして試してみましたがダメでした。

>>918
これだと firefox, nodejs どちらもいけました。

結果オーライでもいいのですが、やはりMathオブジェクトは特別なのかが気になります。

920 = :

>>916
列挙されるかどうかはenumerable属性次第

属性を指定してプロパティを定義したい場合はObject.create, Object.defineProperties, Object.definePropertyを使う
var o = Object.defineProperties({}, {
 x: { value: 10, configurable: true, enumerable: false, writable: true },
 y: { value: 20, configurable: true, enumerable: false, writable: true },
});

逆にプロパティの属性を知りたい場合はObject.getOwnPropertyDescriptorを使う
console.dir(Object.getOwnPropertyDescriptor(Math, 'sin'));

921 = :

>>919
for-in Statement は [[Enumerable]] === true のプロパティ名のみを返す
http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.4
Object.getOwnPropertyNames は [[Enumerable]] === false なプロパティも含めて返す
http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.4

922 = :

>>917は貼り間違えた
ほんとはこっちを貼りたかった
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...in
>説明
>for...in ループは組み込みプロパティに対しては反復しません。
>これらには、String の indexOf メソッドや Object の
>toString メソッドといった、オブジェクトの全組み込みメソッドも含まれます。
>しかしながら、このループは (組み込みプロパティを上書きしたものも含む)
>すべてのユーザ定義プロパティに対して反復します。

enumerable属性は知らなかった 英語版の方には載ってるんだけどね
ちゃんと英語版参照しないとダメね・・・

924 = :

>>922
MDNもいいけど、英語読むならESが一番だよ
MDN英語版は日本語版より新しいけど、情報が古かったり間違っていた事も多々あった

925 = :

そうなのか 了解
次からは日本語MDN読んで大雑把に理解してから(英語苦手)ES読むようにする

926 = :

>>925
日本語あたるなら ES3 も悪くないよ
[[Enumerable]] は ES5 から生まれた属性だから ES5 も読む必要があるけど、その他の共通処理は日本語で理解できる
ES3英文とES5英文を比較すれば差分もわかる
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#section-12.6.4
http://bclary.com/2004/11/07/#a-12.6.4

927 = :

みなさんありがとうございます。勉強になりました。

928 = :

>>926
助かります

930 = :

文字列が表示されたdiv要素にクリックイベントハンドラを登録する

931 = :

連想配列と二次元配列は一緒ってことでいいんでしょうか?

932 = :

>>931
まったく違う。

933 = :

>>931
まったく同じ。

934 = :

どっちだよw

935 = :

var a = document.createElement('a');
a.setAttribute('href','http://google.com/');
a.click();

としたらページ移動する環境としない環境があるのですが
どちらが本来あるべき動作なんでしょうか

936 = :

>>931->>934
ここは多数決で決めよう。
俺は全く同じに一票だから今のところ全く違う1全く同じ2だな。

>>935
こっちは両方共本来あるべき動作に一票いれよう。

939 = :

クロスドメイン制約みたいな話かと思った

940 = :

>>930
div内のどの文字がクリックされたかを知りたいのです
たとえば一文字ずつspanで区切ってidを付けたら可能ですが
それはやりすぎだと思いますし

941 = :

>>940
event.target では不満?

942 = :

idをつける必要はないと思うが

943 = :

>>940
とりあえずjsbinとかでサンプル書いてみてよ
サンプルないとここの人たちも大したアドバイスできないと思うぞ

944 = :

質問です。
エスケープシーケンスのような形で、
「@@」→「@」、「@a」→「A」という文字列置換を行おうと考えています。
「@@a」というような文字列も正しく「@a」と置換させるため、
text.replace( /@@/g, '@b' ).replace( /@a/g, 'A' ).replace( /@b/g, '@' );
のように、「@@」を一時的に「@b」というような文字列において置換させています。
しかし、元から「@b」と書かれていた部分も置換されてしまい、スマートじゃないように思えます。
「@b」のような一時的な文字列を用いない、もっときれいな書き方はありますか?

945 = :

先に「@a」→「A」に変換するのはどうだろうか
その際に「@@a」→「@A」に変換されないように
@aの前が@でなければ変換するようにする
text.replace(/[^@]@a/g, 'A').replace(/@@/g, '@');

946 = :

>>944 '@@@@@a'.replace(/@(.)/g, function (s, c) { return c === '@' ? '@' : c === 'a' ? 'A' : c; }); //=> '@@A'

947 = :

>>945はダメだ a@aがAになる ごめん

948 = :

返信ありがとうございます。
>>946
replaceの第二引数に関数が使えるとは、知りませんでした。
とてもスマートな書き方だと思います。ありがとうございました。
>>945,947
他にも、「@@@a」や「@a@a」、文頭の「@a」等が置換できないようです。
複数回の置換操作でそれらにもなんとか対応できましたが、>>946の方がスッキリ書けそうです。
皆様、どうもありがとうございました。

949 = :

タッチデバイスではmousedownの代わりにpointerdownとかmspointerdownとかtouchdown
対応せざるを得ないんだろうけどclickの代わりはどれになるんだろう
マウスイベントとタッチイベントの互換性ってどうなってるんだろうか

950 = :

http://d.hatena.ne.jp/language_and_engineering/20100111/p1
>HTMLの地の文の中に処理そのものをベタで書いたり,
>jsファイルの中に関数をそのまま並べて書く,というコーディングスタイルだ。

今の自分がまさに関数をずらっと並べている書き方なのですが
これはどういう理由でよくないのでしょうか
また一般的にはどういう書き方をするものなんでしょうか


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について