JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
※前スレ
JavaScript の質問用スレッド vol.122
http://echo.2ch.net/test/read.cgi/tech/1472426483/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
JavaScript の質問用スレッド vol.123 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 73c8-oPzN)
2017/04/03(月) 00:31:25.68ID:82yaJsi70880デフォルトの名無しさん (ワッチョイ f72d-rE3N)
2017/07/11(火) 00:10:33.39ID:i4eD5D7P0 出来るけどグローバル変数になるのでよっぽどの場合以外は使わないようにしましょう
881879 (ワッチョイ d759-TyVU)
2017/07/11(火) 00:27:18.10ID:DtGvVlsG0882デフォルトの名無しさん (ワッチョイ 9723-KuRC)
2017/07/11(火) 01:10:06.11ID:OLy+oHXE0 >>881
クロージャ内変数を掴みに行っているのが見えてないだけだろ。
韓国人死ね
てかマジで他もいろいろ酷いがデタラメ答えるな。
スレのレベルが下がっているのはお前らにも分かるだろアホ共。
もう既に間違いも大量に放置されている。こういうのはお互いに利益無いと知れ。
馬鹿な韓国人には何度言っても通じないようだが。マジで死ね。
クロージャ内変数を掴みに行っているのが見えてないだけだろ。
韓国人死ね
てかマジで他もいろいろ酷いがデタラメ答えるな。
スレのレベルが下がっているのはお前らにも分かるだろアホ共。
もう既に間違いも大量に放置されている。こういうのはお互いに利益無いと知れ。
馬鹿な韓国人には何度言っても通じないようだが。マジで死ね。
883879 (ワッチョイ d759-TyVU)
2017/07/11(火) 01:56:20.34ID:DtGvVlsG0884デフォルトの名無しさん (ワッチョイ b723-BL37)
2017/07/11(火) 02:20:56.58ID:kTultHtx0 XMLHttpRequestとクロスドメイン参照と
JSONPとcallbackを
郵便屋さんで例えてください。
JSONPとcallbackを
郵便屋さんで例えてください。
885デフォルトの名無しさん (ワッチョイ b730-rvkC)
2017/07/11(火) 03:14:02.76ID:jfrWcBvE0 郵便屋でーす
886デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/11(火) 04:47:03.01ID:DVbjq/Wb0 >>879
この両者には僅かな違いがあります。
varを使って宣言する(var a = 10)とその変数はグローバル変数となり
varを使わずに宣言(a = 10)するとまずスコープチェーンを
辿ってaを検索し、aが存在すればaに代入を試みて、
aが存在しなければ、グローバルスコープにaプロパティを追加します。
(グローバルプロパティの生成)
開眼!Javascript
p81
https://jsfiddle.net/jseja/6Xyh3/
この両者には僅かな違いがあります。
varを使って宣言する(var a = 10)とその変数はグローバル変数となり
varを使わずに宣言(a = 10)するとまずスコープチェーンを
辿ってaを検索し、aが存在すればaに代入を試みて、
aが存在しなければ、グローバルスコープにaプロパティを追加します。
(グローバルプロパティの生成)
開眼!Javascript
p81
https://jsfiddle.net/jseja/6Xyh3/
887デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/11(火) 04:54:08.93ID:DVbjq/Wb0889デフォルトの名無しさん (ワッチョイ b70b-KMeR)
2017/07/11(火) 11:27:38.46ID:xvQ/lQkn0 WebでのJSの実行環境は
with(window){}
で囲まれているようなものだからね
でも今からはModuleの時代だしそういう癖つけないほうが良いよ
with(window){}
で囲まれているようなものだからね
でも今からはModuleの時代だしそういう癖つけないほうが良いよ
890879 (ワッチョイ d759-TyVU)
2017/07/11(火) 23:25:29.24ID:DtGvVlsG0891デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 01:07:25.34ID:VV5TEq59M892886 887 (ワッチョイ 57d8-KuRC)
2017/07/12(水) 03:02:30.48ID:JRRJcnxl0893デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 03:04:27.14ID:JRRJcnxl0 こっちは有料の本の中身の情報を
タイトル名、ページ番号
その中身の一部引用までして
書き込んでいるのに
こちらの要望は軽く無視された・・悲しいわぁ・・・
タイトル名、ページ番号
その中身の一部引用までして
書き込んでいるのに
こちらの要望は軽く無視された・・悲しいわぁ・・・
894デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 06:38:54.28ID:HQm2gXhD0 >>886
var 無しだと、グローバルプロパティだから、
スコープチェーンをたどるから、ややこしい
チェーンをたどって見つからなければ、最終的にグローバルプロパティで、
グローバル変数とは別のもの
こんなややこしい仕様を作った、JSの作者は、頭おかしい
var 無しだと、グローバルプロパティだから、
スコープチェーンをたどるから、ややこしい
チェーンをたどって見つからなければ、最終的にグローバルプロパティで、
グローバル変数とは別のもの
こんなややこしい仕様を作った、JSの作者は、頭おかしい
895デフォルトの名無しさん (ワッチョイ f7a9-aOiv)
2017/07/12(水) 07:28:39.75ID:46U9BX050 varはもう使うな。
constかlet使え
constかlet使え
896デフォルトの名無しさん (アウアウカー Sa2b-rE3N)
2017/07/12(水) 07:46:53.52ID:m006016La letが使えないブラウザ向けに作ってる人もいるんです!
897デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 08:57:04.34ID:Xbh+81Re0898デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 09:46:28.42ID:JRRJcnxl0899デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 10:33:07.51ID:Xbh+81Re0 いや、var付きかどうかには違いがあるけど、
グローバルオブジェクトのプロパティとグローバル変数は同じものだよ
スコープにはオブジェクト型ってあって、with文のスコープとグローバルスコープはそうなってるから
グローバルオブジェクトのプロパティとグローバル変数は同じものだよ
スコープにはオブジェクト型ってあって、with文のスコープとグローバルスコープはそうなってるから
900デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 11:12:26.90ID:JRRJcnxl0901デフォルトの名無しさん (スププ Sdbf-HUZE)
2017/07/12(水) 12:40:32.42ID:MU+9qUhDd だからそれはvarの効果であって、グローバルスコープは
グローバルオブジェクトのオブジェクト型スコープだから
そこに対する参照は全てグローバルオブジェクトへの参照へリダイレクトされるんだよ
つまりグローバル変数とグローバルオブジェクトのプロパティは同じもの
varで宣言すれば属性が変わるが存在するのは同じ場所
グローバルオブジェクトのオブジェクト型スコープだから
そこに対する参照は全てグローバルオブジェクトへの参照へリダイレクトされるんだよ
つまりグローバル変数とグローバルオブジェクトのプロパティは同じもの
varで宣言すれば属性が変わるが存在するのは同じ場所
902デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 13:31:19.76ID:JRRJcnxl0 じゃあ他人のコードをレビューする時、
deleteは無視しても挙動は変わらないんだな?
deleteは無視しても挙動は変わらないんだな?
903デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 13:52:48.55ID:JRRJcnxl0 やめたやめた、絡むだけ時間の損だわ。
904デフォルトの名無しさん (ワッチョイ 57d8-hKQV)
2017/07/12(水) 14:42:40.12ID:JRRJcnxl0905デフォルトの名無しさん (JP 0H4f-rvkC)
2017/07/12(水) 15:11:57.05ID:LVxqEvY9H お前の書き込みが俺をイライラさせる件についてはどう思うんだ
906デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 15:53:52.86ID:Xbh+81Re0 >>904
おれがいつそんな細かいことを気にせずテキトーでいいと言った?
俺はここの住人の中でもっとも細かいことが気になる人間だぞ?
だからむしろ、お前はスコープと変数の扱いの仕様レベルのことが分かっていないんだから、
言い回しに気をつけろと超細かいことを言ってるんだよ
いいか、グローバル変数とグローバルプロパティに差なんてない、両者は同じもの
ただvarで宣言するとconfigurableがfalseになるからdeleteできない、それだけなんだよ
おれがいつそんな細かいことを気にせずテキトーでいいと言った?
俺はここの住人の中でもっとも細かいことが気になる人間だぞ?
だからむしろ、お前はスコープと変数の扱いの仕様レベルのことが分かっていないんだから、
言い回しに気をつけろと超細かいことを言ってるんだよ
いいか、グローバル変数とグローバルプロパティに差なんてない、両者は同じもの
ただvarで宣言するとconfigurableがfalseになるからdeleteできない、それだけなんだよ
907デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 16:13:36.51ID:HQm2gXhD0 グローバルオブジェクトは、唯一無二のシングルトン
グローバル変数は、グローバルな変数
グローバルプロパティは、グローバルなプロパティだから、delete で削除できる
これら、3つは別のもの
グローバル変数は、グローバルな変数
グローバルプロパティは、グローバルなプロパティだから、delete で削除できる
これら、3つは別のもの
908デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 17:33:04.93ID:VV5TEq59M 要するに、普通のオブジェクトでのルールをグローバルオブジェクトにも適用して例外をなくしたからぱっと見で意味が分からない仕様になってるんだろうなぁ
全てがグローバルオブジェクトの中の出来事と思えばさほどおかしい仕様ではないが他言語からは理解しがたい不思議な世界かもしれない
全てがグローバルオブジェクトの中の出来事と思えばさほどおかしい仕様ではないが他言語からは理解しがたい不思議な世界かもしれない
909デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 17:35:19.86ID:VV5TEq59M 仮にグローバルオブジェクトの外からそれらを見ることがあるなら、グローバルプロパティと変数の差はもっとわかり安いだろう
910デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 18:06:03.89ID:VV5TEq59M とにかく開発時には、verもしくはthis(orなにかしらのオブジェクト)にドットで繋いで変数宣言しないとだめって事だな
それ以外の宣言だとぱっと見だと判断のつかない所属の変数になってしまう事がある
それはJSとしては正しい挙動だが、わざわざそんな事を狙ってやるやつは居ない
大抵はミスでそうなるケース
それ以外の宣言だとぱっと見だと判断のつかない所属の変数になってしまう事がある
それはJSとしては正しい挙動だが、わざわざそんな事を狙ってやるやつは居ない
大抵はミスでそうなるケース
911デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 18:07:07.39ID:HQm2gXhD0 JSが難しい理由は、var, new の有無で、意味が変わってくる所。
ちょっとした書き間違いで、動作が異なる
しかも、コンパイルエラーにならないで、
しばらくしてから違う箇所で、実行時エラーになる
実装者向けの機能が、むき出しで、一般のプログラマーまで、
それを習得しないといけなくなってる
すごく、インタープリター内部の話まで、しなければならない。
それで、Ruby よりも、かなり難しい
ちょっとした書き間違いで、動作が異なる
しかも、コンパイルエラーにならないで、
しばらくしてから違う箇所で、実行時エラーになる
実装者向けの機能が、むき出しで、一般のプログラマーまで、
それを習得しないといけなくなってる
すごく、インタープリター内部の話まで、しなければならない。
それで、Ruby よりも、かなり難しい
912デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 18:24:56.67ID:VV5TEq59M JSはフリーダムすぎるんだよね
誰も使わないような自由があちらこちらにあって、それがケアレスミス時の落とし穴になるという
いろいろ作ってて理解不能なエラー挙動に直面して、ウォッチで追って行って「そんな仕様だったのかよ。。。」とあとから気づくことも多かった
誰も使わないような自由があちらこちらにあって、それがケアレスミス時の落とし穴になるという
いろいろ作ってて理解不能なエラー挙動に直面して、ウォッチで追って行って「そんな仕様だったのかよ。。。」とあとから気づくことも多かった
913デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 19:23:00.20ID:Xbh+81Re0 まあnew演算子の挙動は理解しとかないといけないだろうな
旧クラスシステムは、関数にデフォでprototypeメソッドが生えることを除くと
完全にnew演算子の力だけで成り立ってることを一旦理解すれば
newの有無で〜とか言う発言はなくなる
だってそもそもnewは演算子なんだから、そりゃどんな演算子でも飛ばせば動作が変わって来るのは当然だし
旧クラスシステムは、関数にデフォでprototypeメソッドが生えることを除くと
完全にnew演算子の力だけで成り立ってることを一旦理解すれば
newの有無で〜とか言う発言はなくなる
だってそもそもnewは演算子なんだから、そりゃどんな演算子でも飛ばせば動作が変わって来るのは当然だし
914デフォルトの名無しさん (ワッチョイ f7a9-aOiv)
2017/07/12(水) 19:32:20.46ID:46U9BX050 ここにいる人たちってeslintとか使ってないんか
915デフォルトの名無しさん (ワッチョイ 7f23-ZuCk)
2017/07/12(水) 19:49:51.64ID:svcC79vd0 勉強にはなったと思う
しかしグローバルプロパティを
deleteしようとすることは
俺の仕事内容的にはまずないだろうな……
しかしグローバルプロパティを
deleteしようとすることは
俺の仕事内容的にはまずないだろうな……
916デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 20:12:49.78ID:HQm2gXhD0 new Number()
Number()
new を付けると、オブジェクトで、
無しだと、プリミティブになるとか、
ちょっとした変化を付けているから、困る。
ちょっとした書き方の変化で、色々と出来るようにしているから、ややこしい
Number()
new を付けると、オブジェクトで、
無しだと、プリミティブになるとか、
ちょっとした変化を付けているから、困る。
ちょっとした書き方の変化で、色々と出来るようにしているから、ややこしい
917デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 20:39:54.78ID:Xbh+81Re0 取り敢えずクラスはクラス構文で書けばいい
そうすればnew無しでは呼べない
そうすればnew無しでは呼べない
918デフォルトの名無しさん (スププ Sd70-wcQn)
2017/07/13(木) 03:17:56.06ID:UhYYQlFzd >>907
違う違う、いい加減仕様読みなって
グローバルに変数作ろうとするとグローバルオブジェクトのプロパティを作成することになるの
その時var宣言付きだとconfigurableがfalseになるからdeleteできない
ただそれだけでグローバル変数とグローバルプロパティに区別はない
違う違う、いい加減仕様読みなって
グローバルに変数作ろうとするとグローバルオブジェクトのプロパティを作成することになるの
その時var宣言付きだとconfigurableがfalseになるからdeleteできない
ただそれだけでグローバル変数とグローバルプロパティに区別はない
919デフォルトの名無しさん (ワントンキン MM1a-cSUh)
2017/07/13(木) 06:48:46.09ID:1ML2Rzf1M >>918
自分で言ってて矛盾してると思わないの?
自分で言ってて矛盾してると思わないの?
920デフォルトの名無しさん (ワッチョイ 4d0b-kuRt)
2017/07/13(木) 07:01:17.86ID:qKiU4eWA0 何も矛盾していない
矛盾してると思うのは君の前提知識が誤ってるから
そしてそろそろ仕様を読め、この順で
わからないところがあったら説明してやるから
https://tc39.github.io/ecma262/#sec-globaldeclarationinstantiation
https://tc39.github.io/ecma262/#sec-createglobalvarbinding
https://tc39.github.io/ecma262/#sec-global-environment-records
https://tc39.github.io/ecma262/#sec-object-environment-records
矛盾してると思うのは君の前提知識が誤ってるから
そしてそろそろ仕様を読め、この順で
わからないところがあったら説明してやるから
https://tc39.github.io/ecma262/#sec-globaldeclarationinstantiation
https://tc39.github.io/ecma262/#sec-createglobalvarbinding
https://tc39.github.io/ecma262/#sec-global-environment-records
https://tc39.github.io/ecma262/#sec-object-environment-records
921デフォルトの名無しさん (ワントンキン MM1a-cSUh)
2017/07/13(木) 08:33:49.98ID:1ML2Rzf1M >>920
なぜ変数とプロパティの違いすら分からないの?
両者は全然ちがうだろ
グローバルだけはスコープチェーンの最終地点だから使用する際の挙動に違いがほとんど無いだけ
これはたまたまそうなってるだけであり、「区別がない」なんて無知にもほどがあるだろ
なぜ変数とプロパティの違いすら分からないの?
両者は全然ちがうだろ
グローバルだけはスコープチェーンの最終地点だから使用する際の挙動に違いがほとんど無いだけ
これはたまたまそうなってるだけであり、「区別がない」なんて無知にもほどがあるだろ
922デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/13(木) 13:51:12.12ID:oJKwR9xkM >>907
つまり、こういう事か?
- delete演算子で削除できるものが「グローバルプロパティ」
- var 宣言したものは「グローバル変数」
オレオレ定義にしか思えんのだが、該当する仕様のURLを教えてくれ。
つまり、こういう事か?
- delete演算子で削除できるものが「グローバルプロパティ」
- var 宣言したものは「グローバル変数」
オレオレ定義にしか思えんのだが、該当する仕様のURLを教えてくれ。
923デフォルトの名無しさん (フリッテル MM5e-knux)
2017/07/13(木) 14:05:18.85ID:oJKwR9xkM >>921
var宣言してもグローバルオブジェクトのプロパティになるからでは?
<script>
var a = 1; // グローバル変数
console.log(this.a); // グローバルオブジェクトのプロパティ
</script>
だから、これは「グローバル変数でもグローバルオブジェクトのプロパティでもある」という認識が正しい。
彼が指摘しているように、仕様を読んだ方がいい。
var宣言してもグローバルオブジェクトのプロパティになるからでは?
<script>
var a = 1; // グローバル変数
console.log(this.a); // グローバルオブジェクトのプロパティ
</script>
だから、これは「グローバル変数でもグローバルオブジェクトのプロパティでもある」という認識が正しい。
彼が指摘しているように、仕様を読んだ方がいい。
924デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/13(木) 20:28:17.30ID:fMgp1qch0 トップレベルでObject.getOwmPropertyDescriptor(this, 'v')
すりゃ>>918が正しい事が確認できる
すりゃ>>918が正しい事が確認できる
925デフォルトの名無しさん (ワッチョイ 4d8e-N0vF)
2017/07/13(木) 21:06:35.19ID:+QqE9gTA0 スレ違いだったらすみません。
JSの勉強として既存のスクリプトを読んだりしているのですが、どうしても理解できない点がありまして、
よろしければご教示お願いできないかと思い書き込ませていただきました。
読んでいるのは以下のプロジェクトの /lib/marked.js となります。
JSの勉強に加えて、似たような処理をするスクリプトを組む参考にもなると思い選びました。
https://github.com/chjj/marked
当該スクリプトの下部で定義されている replace という関数に含まれている以下の文が、何を目的として存在しているのかが分かりません。
val = val.replace(/(^|[^\[])\^/g, '$1');
もしお時間ありましたら、どなたか解説お願いしても構わないでしょうか?
JSの勉強として既存のスクリプトを読んだりしているのですが、どうしても理解できない点がありまして、
よろしければご教示お願いできないかと思い書き込ませていただきました。
読んでいるのは以下のプロジェクトの /lib/marked.js となります。
JSの勉強に加えて、似たような処理をするスクリプトを組む参考にもなると思い選びました。
https://github.com/chjj/marked
当該スクリプトの下部で定義されている replace という関数に含まれている以下の文が、何を目的として存在しているのかが分かりません。
val = val.replace(/(^|[^\[])\^/g, '$1');
もしお時間ありましたら、どなたか解説お願いしても構わないでしょうか?
926デフォルトの名無しさん (アウアウカー Sa11-7i7E)
2017/07/13(木) 21:15:07.43ID:OmneFwIKa 性器表現
927デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/13(木) 21:42:50.08ID:7UlgIumN0 他人のソースコードを読んでも、作者にしか分からないから、
時間が掛かるだけで、何にもならない。
自分で作った事だけが、自分を成長させる
それに、どうせ読むなら、John Resig 作の jQuery、
Jeremy Ashkenas 作の Underscore.js など、すごいライブラリを読みなよ
正規表現 - MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
時間が掛かるだけで、何にもならない。
自分で作った事だけが、自分を成長させる
それに、どうせ読むなら、John Resig 作の jQuery、
Jeremy Ashkenas 作の Underscore.js など、すごいライブラリを読みなよ
正規表現 - MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
928デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/13(木) 22:41:06.52ID:7UlgIumN0 var str3 = str.replace(/(^|[^\[])\^/g, '$1');
g フラグは、一致するだけ、複数にマッチする
$n は、( )で囲んだ部分に、一致した部分。
$1 は、1つ目の( )、$2 なら、2つ目の( )
^ は、文字列の先頭に一致する。^A なら、先頭がA。
ただし、[ ]の先頭にあると、否定の意味になる
[abc][a-c]は、a, b, c のどれかの1文字に一致するが、
[^abc]は、a, b, c のどれかの1文字に一致しない文字を表す
\ は、特殊文字をエスケープする。
特殊文字の意味をなくして、通常の文字として扱う。
\^ なら、^ の特殊な意味をなくして、単に、^ 文字を表す
\[ なら、[ 。
[ ] の中で、[ を使えないから、\[ と書いている。
つまり、[^\[] は外側の、[ ] を外すと、^\[ となり、[ 以外の文字
| は、どちらかの文字を表す。A|B なら、A か、B
(^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
2文字目が、^ にマッチする。
$1 で、( )内は、1文字目だけを取り出す
g フラグは、一致するだけ、複数にマッチする
$n は、( )で囲んだ部分に、一致した部分。
$1 は、1つ目の( )、$2 なら、2つ目の( )
^ は、文字列の先頭に一致する。^A なら、先頭がA。
ただし、[ ]の先頭にあると、否定の意味になる
[abc][a-c]は、a, b, c のどれかの1文字に一致するが、
[^abc]は、a, b, c のどれかの1文字に一致しない文字を表す
\ は、特殊文字をエスケープする。
特殊文字の意味をなくして、通常の文字として扱う。
\^ なら、^ の特殊な意味をなくして、単に、^ 文字を表す
\[ なら、[ 。
[ ] の中で、[ を使えないから、\[ と書いている。
つまり、[^\[] は外側の、[ ] を外すと、^\[ となり、[ 以外の文字
| は、どちらかの文字を表す。A|B なら、A か、B
(^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
2文字目が、^ にマッチする。
$1 で、( )内は、1文字目だけを取り出す
929デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/13(木) 22:41:29.60ID:7UlgIumN0 var str = "a^^b";
var str2 = str.match(/(^|[^\[])\^/g);
var str3 = str.replace(/(^|[^\[])\^/g, '$1');
console.log(str2, '\n', str3);
str2は、a^ で、$1 は、( )内だから、a だけを表す。
replaceでは、a^ を、a で置換するから、str3は、a^b となる
var str2 = str.match(/(^|[^\[])\^/g);
var str3 = str.replace(/(^|[^\[])\^/g, '$1');
console.log(str2, '\n', str3);
str2は、a^ で、$1 は、( )内だから、a だけを表す。
replaceでは、a^ を、a で置換するから、str3は、a^b となる
930デフォルトの名無しさん (ワッチョイ 4d0b-kuRt)
2017/07/13(木) 22:53:39.59ID:qKiU4eWA0 >>921
順を追って書いていくからどこで引っかかるか教えてくれ
変数はEnvironment Recordという構造体に保存される
Environment RecordにはObject型があって、そこでは変数はオブジェクトのプロパティとして保存される
グローバルスコープのEnvironment RecordはグローバルオブジェクトをベースとしたObject型だ
グローバル変数はグローバルオブジェクトのプロパティとして保存される
順を追って書いていくからどこで引っかかるか教えてくれ
変数はEnvironment Recordという構造体に保存される
Environment RecordにはObject型があって、そこでは変数はオブジェクトのプロパティとして保存される
グローバルスコープのEnvironment RecordはグローバルオブジェクトをベースとしたObject型だ
グローバル変数はグローバルオブジェクトのプロパティとして保存される
931デフォルトの名無しさん (ワッチョイ 8bf3-z+eH)
2017/07/13(木) 23:24:43.34ID:2zl2aPWN0 >>925が超初心者と想定した説明を。
例えば入力された電話番号をチェックしたい場合、有効な電話番号を10桁の数字とすると、
if (phoneNumber == "0000000000" || phoneNumber == "0000000001" || ......)
と書いていては現実的に不可能です。
正規表現は文字列の法則を示したもので、replace関数の親戚のmatch関数で、
if (phoneNumber.match(/[0123456789]{10}/))
と書けば、"0000000000"〜"9999999999"までをカバー出来ます。
[0123456789]はより単純に[0-9]と書くこともでき、この部分は0〜9の数字1文字を示しています。
その後に続く{10}はそれを10回繰り返したものという意味です。
実はこれでは不完全で、この正規表現では10桁の数字さえあればよく、
例えば11桁以上の数字や、"0123456789A"や"A01234567890"みたいな文字も通ってしまいます。
そこで先頭に^をつけることによって、数字から始まることを示し、
最後に$をつけることによって、10桁で終了することを示せば、期待通りになります。
if (phoneNumber.match(/^[0-9]{10}$/))
さて本題ですが、上のmatch関数もそうですが、replace関数の1番目の引数は""で囲っていなく//で囲っています。
これは文字列ではなく、正規表現オブジェクトを渡していて、matchやreplace関数ではそうするもんだと思って下さい。
文字列変数valにある、(^|[^\[])\^という正規表現で示される部分を、(2番目の引数の)$1に置き換えるという意味です。
$1というのは、正規表現の後方参照と呼ばれるもので、正規表現の1番目の丸括弧()の中を指しています。
(^|[^\[])\^という正規表現なので、(^|[^\[])の部分が$1になります。
(^|[^\[])\^を(^|[^\[])に置き換える。つまり、丸括弧の外にある\^の部分を削りたいわけです。
/(^|[^\[])\^/gと書いてますが、このgというのは、正規表現のフラグの1つで、一致したもの全てを置き換えるという意味です。
もしgがない場合、一致した最初の1つしか置き換えられません。
大文字小文字を区別しないフラグなど、フラグは他にもいくつかあります。
初心者に正規表現は難しいので、(^|[^\[])\^がどういう意味なのかは時間をかけて勉強してみて下さい。
例えば入力された電話番号をチェックしたい場合、有効な電話番号を10桁の数字とすると、
if (phoneNumber == "0000000000" || phoneNumber == "0000000001" || ......)
と書いていては現実的に不可能です。
正規表現は文字列の法則を示したもので、replace関数の親戚のmatch関数で、
if (phoneNumber.match(/[0123456789]{10}/))
と書けば、"0000000000"〜"9999999999"までをカバー出来ます。
[0123456789]はより単純に[0-9]と書くこともでき、この部分は0〜9の数字1文字を示しています。
その後に続く{10}はそれを10回繰り返したものという意味です。
実はこれでは不完全で、この正規表現では10桁の数字さえあればよく、
例えば11桁以上の数字や、"0123456789A"や"A01234567890"みたいな文字も通ってしまいます。
そこで先頭に^をつけることによって、数字から始まることを示し、
最後に$をつけることによって、10桁で終了することを示せば、期待通りになります。
if (phoneNumber.match(/^[0-9]{10}$/))
さて本題ですが、上のmatch関数もそうですが、replace関数の1番目の引数は""で囲っていなく//で囲っています。
これは文字列ではなく、正規表現オブジェクトを渡していて、matchやreplace関数ではそうするもんだと思って下さい。
文字列変数valにある、(^|[^\[])\^という正規表現で示される部分を、(2番目の引数の)$1に置き換えるという意味です。
$1というのは、正規表現の後方参照と呼ばれるもので、正規表現の1番目の丸括弧()の中を指しています。
(^|[^\[])\^という正規表現なので、(^|[^\[])の部分が$1になります。
(^|[^\[])\^を(^|[^\[])に置き換える。つまり、丸括弧の外にある\^の部分を削りたいわけです。
/(^|[^\[])\^/gと書いてますが、このgというのは、正規表現のフラグの1つで、一致したもの全てを置き換えるという意味です。
もしgがない場合、一致した最初の1つしか置き換えられません。
大文字小文字を区別しないフラグなど、フラグは他にもいくつかあります。
初心者に正規表現は難しいので、(^|[^\[])\^がどういう意味なのかは時間をかけて勉強してみて下さい。
932デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/13(木) 23:38:29.43ID:ZRvPs5t50 >>928
というかその正規表現はおかしいだろ。
JavaScriptではエラーにならないし、
よくあるサイト上でのチェックでも実際のJavaScriptで動作させているから動いてしまうが。
チェッカーを探したがいいのが無いね。
> (^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
意味的におかしいだろ。^ は [ 以外の文字なんですがそれは?
君が勘違いしているのは下記か?
/(\^|[^\[])\^/
が、まあ、これが意味ないのは上記の通り。意味があるようにするとしたら以下か?
/(^\^|[^\[])\^/
韓国人死ね
というかその正規表現はおかしいだろ。
JavaScriptではエラーにならないし、
よくあるサイト上でのチェックでも実際のJavaScriptで動作させているから動いてしまうが。
チェッカーを探したがいいのが無いね。
> (^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
意味的におかしいだろ。^ は [ 以外の文字なんですがそれは?
君が勘違いしているのは下記か?
/(\^|[^\[])\^/
が、まあ、これが意味ないのは上記の通り。意味があるようにするとしたら以下か?
/(^\^|[^\[])\^/
韓国人死ね
933あ (スフッ Sd94-HJuN)
2017/07/13(木) 23:54:34.87ID:gzfFo6hjd934デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 00:09:24.28ID:jwaA4OPc0 そもそも、この正規表現は正しいのか?
935デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 00:24:01.50ID:jsZNOhnp0 >>933
え?それってありなん?
まあ俺は正規表現のプロではないが。
そして試してみた結果、確かにそのようだが、ものすごく気持ち悪い。
'^'.replace(/(^|[^\[])\^/g,'$1'); // ''
これってマジでありなん?しかもカッコ内じゃないのに置換されてるし。
韓国人死ね
え?それってありなん?
まあ俺は正規表現のプロではないが。
そして試してみた結果、確かにそのようだが、ものすごく気持ち悪い。
'^'.replace(/(^|[^\[])\^/g,'$1'); // ''
これってマジでありなん?しかもカッコ内じゃないのに置換されてるし。
韓国人死ね
936デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 00:36:41.22ID:i0uGqEt60 ^が行頭を表すなんて朝鮮人以外はみんな知ってる
937デフォルトの名無しさん (ワッチョイ 2e20-z+eH)
2017/07/14(金) 01:07:53.54ID:+/3l0vud0 さわんじゃね
938デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 01:18:47.21ID:jwaA4OPc0 var str = "xabc";
var str2 = str.match(/(^|a)b/g);
console.log(str2);
ab と一致する。
^ これどういう意味?
行頭または?
はあ?
間違いか?
var str2 = str.match(/(^|a)b/g);
console.log(str2);
ab と一致する。
^ これどういう意味?
行頭または?
はあ?
間違いか?
939デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 01:26:37.87ID:jwaA4OPc0 var str = "xabc";
var str2 = str.match(/(^|a)b/g);
console.log(str2); // ab
str = "bc";
str2 = str.match(/(^|a)b/g);
console.log(str2); // b
行頭が、b または、
ab
var str2 = str.match(/(^|a)b/g);
console.log(str2); // ab
str = "bc";
str2 = str.match(/(^|a)b/g);
console.log(str2); // b
行頭が、b または、
ab
940デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 01:41:53.20ID:jsZNOhnp0 すまん、935のカッコ内云々は俺の勘違いだった。
ただ、行頭をキャプチャして置換に使うってのがなあ。これって合法なん?
韓国人死ね
ただ、行頭をキャプチャして置換に使うってのがなあ。これって合法なん?
韓国人死ね
941デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 02:14:57.74ID:i0uGqEt60942デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 02:51:48.36ID:jsZNOhnp0 >>941
確かに以下を見る限り合法のようだ。
https://abicky.net/2010/05/30/135112/
やりたかったことは replace(/(?<!\[)\^/g,'') なんだろうけど、
JavaScriptでは否定後読みは使えないからああなったという感じか。
Perl使いがキモイ正規表現を使うとは聞いていたが、遭遇したことは無かったのだが、これか。
あくまでマッチ+バッファであり、型の感覚が無いから、プログラマからするとキモイわけだ。
とはいえこれに関してはPerl使いのほうが正しいのだろう。
韓国人死ね
確かに以下を見る限り合法のようだ。
https://abicky.net/2010/05/30/135112/
やりたかったことは replace(/(?<!\[)\^/g,'') なんだろうけど、
JavaScriptでは否定後読みは使えないからああなったという感じか。
Perl使いがキモイ正規表現を使うとは聞いていたが、遭遇したことは無かったのだが、これか。
あくまでマッチ+バッファであり、型の感覚が無いから、プログラマからするとキモイわけだ。
とはいえこれに関してはPerl使いのほうが正しいのだろう。
韓国人死ね
943デフォルトの名無しさん (ワッチョイ 6e0b-kuRt)
2017/07/14(金) 03:09:55.88ID:IlK8Z/pQ0 後読みはES2018で入るだろう
944デフォルトの名無しさん (ワッチョイ 4d8e-N0vF)
2017/07/14(金) 05:11:48.47ID:3/uFIGY50 925に対して回答ありがとうございます。
わざわざ詳細な説明いただき助かりました。
申し訳ありませんが、その上で何点か再確認よろしいでしょうか?
まず $1 だとマッチした内容に置換されるが、当該のコードは '$1' なので単なる文字列と見なしてよろしいでしょうか?
ならびに [^\[] は行頭文字ともマッチするので記述が冗長だと思うのですが、いかがでしょうか?
当該の一文が出てくるのは小さな関数なのですが、何のためにこのような処理をされているのかが全文を読んでもさっぱり見えてきません。
何を目的としてこのように書かれているのか、どなたか分かりますでしょうか?
わざわざ詳細な説明いただき助かりました。
申し訳ありませんが、その上で何点か再確認よろしいでしょうか?
まず $1 だとマッチした内容に置換されるが、当該のコードは '$1' なので単なる文字列と見なしてよろしいでしょうか?
ならびに [^\[] は行頭文字ともマッチするので記述が冗長だと思うのですが、いかがでしょうか?
当該の一文が出てくるのは小さな関数なのですが、何のためにこのような処理をされているのかが全文を読んでもさっぱり見えてきません。
何を目的としてこのように書かれているのか、どなたか分かりますでしょうか?
945デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/14(金) 08:34:30.97ID:HpYhyMQyM >>944
$1は一つ目のキャプチャ文字列。
[^\[] は行頭にマッチしない。
リファレンスを読めば解決する問題なので熟読しろ。
もしくは、テストコードを作って検証しろ。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace
目的「"^" を削除する。ただし、"[^" は削除しない。」
これ以上はコード全体を読まないと解釈しようがない。
(中途半端な文法規則を作っている感はあるが)
$1は一つ目のキャプチャ文字列。
[^\[] は行頭にマッチしない。
リファレンスを読めば解決する問題なので熟読しろ。
もしくは、テストコードを作って検証しろ。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace
目的「"^" を削除する。ただし、"[^" は削除しない。」
これ以上はコード全体を読まないと解釈しようがない。
(中途半端な文法規則を作っている感はあるが)
946あ (スフッ Sd94-HJuN)
2017/07/14(金) 08:36:08.67ID:vN8eqjVVd >>944
行頭か、[以外で始まる^でしょ?
^abcde //マッチする
[^abcde //マッチしない
abc^defg //マッチする
abc[^defg //マッチしない
行頭とマッチするかは/m次第だろうけどマッチするのは、改行文字かと。
行頭か、[以外で始まる^でしょ?
^abcde //マッチする
[^abcde //マッチしない
abc^defg //マッチする
abc[^defg //マッチしない
行頭とマッチするかは/m次第だろうけどマッチするのは、改行文字かと。
947デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 08:43:14.00ID:i0uGqEt60948デフォルトの名無しさん (ワッチョイ 4d8e-N0vF)
2017/07/14(金) 09:07:40.64ID:3/uFIGY50949デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 09:21:57.72ID:jwaA4OPc0950デフォルトの名無しさん (ワッチョイ 6e0b-kuRt)
2017/07/14(金) 09:41:11.04ID:IlK8Z/pQ0 文字へのマッチとは別に、位置へのマッチがあることが分かれば難しいものではない
951デフォルトの名無しさん (ワッチョイ 6ef3-9pdu)
2017/07/14(金) 12:04:36.19ID:+NhBdlJT0 質問お願いします。
要素にクラスを追加する場合、id指定だと下記のようにするとできるのですが、
var e = document.getElementById("abc");
e.classList.add("xyz");
クラスにクラスを追加する場合、どのようにすればいいのでしょうか?
var e = document.getElementsByClassName("abc");
e.classList.add("xyz");
これだとエラーになってしまします。
よろしくお願いします。
要素にクラスを追加する場合、id指定だと下記のようにするとできるのですが、
var e = document.getElementById("abc");
e.classList.add("xyz");
クラスにクラスを追加する場合、どのようにすればいいのでしょうか?
var e = document.getElementsByClassName("abc");
e.classList.add("xyz");
これだとエラーになってしまします。
よろしくお願いします。
952デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 12:34:22.15ID:i0uGqEt60 getElementとgetElementsの違いを理解しよう
中学校(最近は小学校?)で習ったはずだぞ
中学校(最近は小学校?)で習ったはずだぞ
953デフォルトの名無しさん (ワッチョイ 8bf3-z+eH)
2017/07/14(金) 12:54:26.06ID:yf7LD5Sw0 idは一意で、同じidはないはずなので(あった場合それは正しいドキュメントではない)、
getElementByIdは指定idの要素オブジェクトを1つだけ返すのに対して、
classはそういう制限はなく、同じclassが何個も出てくるのを想定しているので、
getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
すなわち、e[0]、もしくはe.item(0)のようにアクセスするのが正しいです。
getElementByIdは指定idの要素オブジェクトを1つだけ返すのに対して、
classはそういう制限はなく、同じclassが何個も出てくるのを想定しているので、
getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
すなわち、e[0]、もしくはe.item(0)のようにアクセスするのが正しいです。
954デフォルトの名無しさん (ワッチョイ 15a5-S4qQ)
2017/07/14(金) 13:27:58.97ID:14PnxSlX0 ID == identification
955951 (ワッチョイ 6ef3-9pdu)
2017/07/14(金) 14:04:28.62ID:+NhBdlJT0956デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/14(金) 14:05:49.80ID:HpYhyMQyM >>953
> getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
getElementsByClassName の返り値は HTMLCollection だが、HTMLCollection は iterable ではない。
https://triple-underscore.github.io/DOM4-ja.html#interface-document
https://triple-underscore.github.io/DOM4-ja.html#interface-htmlcollection
> getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
getElementsByClassName の返り値は HTMLCollection だが、HTMLCollection は iterable ではない。
https://triple-underscore.github.io/DOM4-ja.html#interface-document
https://triple-underscore.github.io/DOM4-ja.html#interface-htmlcollection
957デフォルトの名無しさん (ワッチョイ 6e0b-EdWd)
2017/07/14(金) 17:21:23.89ID:IlK8Z/pQ0 △イテレータブル ○イテラブル ということは置いといて
何をもってイテラブルと言ってるのかによるだろう
HTMLCollectionは
ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
ただ「列挙可能」という意味で言ってるなら問題はない
何をもってイテラブルと言ってるのかによるだろう
HTMLCollectionは
ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
ただ「列挙可能」という意味で言ってるなら問題はない
958デフォルトの名無しさん (JP 0H37-S4qQ)
2017/07/14(金) 18:29:09.93ID:vv2qH35gH それなら普通に配列って言えばいいだけでは
959デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/14(金) 18:44:26.77ID:HpYhyMQyM >>957
> ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
ES7 には @@iterable が存在しないが、ソースは?
ES7では @@iterator を持つオブジェクトが for-of で「列挙可能」
iterable な NodeList は for-of で列挙可能だが、iterable ではない HTMLCollection は不可能。
http://www.ecma-international.org/ecma-262/7.0/#sec-well-known-symbols
> ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
ES7 には @@iterable が存在しないが、ソースは?
ES7では @@iterator を持つオブジェクトが for-of で「列挙可能」
iterable な NodeList は for-of で列挙可能だが、iterable ではない HTMLCollection は不可能。
http://www.ecma-international.org/ecma-262/7.0/#sec-well-known-symbols
960デフォルトの名無しさん (ワッチョイ 6e0b-EdWd)
2017/07/14(金) 19:27:51.05ID:IlK8Z/pQ0 @@iteratorの間違いだよ それくらい察して
それにイテラブルだなんて汎用的な言葉とも取れるし、そんな突っつくことでもないと思うよ
それにイテラブルだなんて汎用的な言葉とも取れるし、そんな突っつくことでもないと思うよ
961デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/15(土) 00:32:27.99ID:5uf8kOgL0 // テストデータ
var dataAry = ["xabc", "bc", "ac"];
var re = /(^|a)b/g;
function testFunc(elem, index, array) {
var myArray = elem.match(re);
console.log(elem, '\n', myArray, '\n');
}
dataAry.forEach(testFunc);
結果は、ab, b, null
つまり、
1. 行頭がb
2. ab を含む文字列
var dataAry = ["xabc", "bc", "ac"];
var re = /(^|a)b/g;
function testFunc(elem, index, array) {
var myArray = elem.match(re);
console.log(elem, '\n', myArray, '\n');
}
dataAry.forEach(testFunc);
結果は、ab, b, null
つまり、
1. 行頭がb
2. ab を含む文字列
962961 (ワッチョイ 0aaa-32Qs)
2017/07/15(土) 01:02:35.33ID:5uf8kOgL0 このテストデータで実行してみ
var dataAry = ["xabc", "bc", "ac", "cb", "^b"];
結果は、ab, b, null, null, null
var dataAry = ["xabc", "bc", "ac", "cb", "^b"];
結果は、ab, b, null, null, null
963デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 12:44:42.91ID:IP8gokNa0 JSの質問か際どいんだけど誰か良い案あればおしえてほしい
番組表のようなものを作りたくて、縦軸で時系列、横軸でチャンネル区切りを表したい
テーブルタグを用いるのが良いかと思っていて、複数の時間帯をまたぐものはrowcolを指定することでいい感じにできないかと考えてる
肝心の番組情報だが、常に何かの番組があるわけではないのでところどころに抜けのあるjson形式のデータが返ってきててそれを使う想定
こういう感じなんだけど各番組が複数のセルをまたいだり空白の時間があったりでいい感じにテーブルを動的に構築するのが面倒くさいなと思うんだけど良い案ないだろうか
フレームワークとかはなんでもいいけどVueを使おうかなと思ってる
番組表のようなものを作りたくて、縦軸で時系列、横軸でチャンネル区切りを表したい
テーブルタグを用いるのが良いかと思っていて、複数の時間帯をまたぐものはrowcolを指定することでいい感じにできないかと考えてる
肝心の番組情報だが、常に何かの番組があるわけではないのでところどころに抜けのあるjson形式のデータが返ってきててそれを使う想定
こういう感じなんだけど各番組が複数のセルをまたいだり空白の時間があったりでいい感じにテーブルを動的に構築するのが面倒くさいなと思うんだけど良い案ないだろうか
フレームワークとかはなんでもいいけどVueを使おうかなと思ってる
964デフォルトの名無しさん (ワッチョイ beea-GxvA)
2017/07/15(土) 13:01:10.25ID:jjpJygJ80 そこを丸投げしてしまったら貴様のやる事は何も無いではないか
965あ (スフッ Sd94-HJuN)
2017/07/15(土) 15:28:58.61ID:l4jBJff8d >>963
いい感じにテーブルも何も、最初から3分毎くらいにテーブル切っといて、やってる時間分rowspanかけるか、
それか透明テーブルにoverflow:visibleで放送時間分の高さ持ったdivタグおいといたら楽では?
いい感じにテーブルも何も、最初から3分毎くらいにテーブル切っといて、やってる時間分rowspanかけるか、
それか透明テーブルにoverflow:visibleで放送時間分の高さ持ったdivタグおいといたら楽では?
966デフォルトの名無しさん (スププ Sd94-wcQn)
2017/07/15(土) 16:08:23.39ID:DMIdUVsAd CSSレイアウトの方がいいかもな
967デフォルトの名無しさん (ワッチョイ 706f-qBah)
2017/07/15(土) 16:46:23.11ID:mnMcO+Xt0 radikoの番組表の動作パクって自作した
968デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 16:56:01.66ID:IP8gokNa0 >>965
後者のほうが楽そうな印象はあるけどどうも構造的には前者のほうがきれいに感じる
前者のテーブルって最初に数分ごとに区切られた空のテーブルを作っておいて、JSONを取得したタイミングでテーブルに書き込む関数を呼ぶみたいなアプローチでいいんだろうか
後者のほうが楽そうな印象はあるけどどうも構造的には前者のほうがきれいに感じる
前者のテーブルって最初に数分ごとに区切られた空のテーブルを作っておいて、JSONを取得したタイミングでテーブルに書き込む関数を呼ぶみたいなアプローチでいいんだろうか
969デフォルトの名無しさん (ワッチョイ d430-S4qQ)
2017/07/15(土) 17:13:37.66ID:N0flRzpM0 もう一分ごとに区切れば?
所詮1440×チャンネル数分のテーブルでしょ?
エクセルに比べれば楽勝w
所詮1440×チャンネル数分のテーブルでしょ?
エクセルに比べれば楽勝w
970デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 17:21:12.42ID:IP8gokNa0 >>969
すまん、区切りをどうするかってのは特に問題じゃないんだ
すまん、区切りをどうするかってのは特に問題じゃないんだ
971デフォルトの名無しさん (ワッチョイ d430-S4qQ)
2017/07/15(土) 17:25:50.69ID:N0flRzpM0972デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 17:48:01.92ID:IP8gokNa0 >>971
得られる番組の開始終了時刻が5分区切りなんだけどそれでも1分区切りのが簡単になるの?
得られる番組の開始終了時刻が5分区切りなんだけどそれでも1分区切りのが簡単になるの?
973あ (スフッ Sd94-HJuN)
2017/07/15(土) 18:28:36.04ID:l4jBJff8d >>968
前者でch×3分なり、5分毎のテーブル作って、
そのセルにoverflowを表示するdivタグで1セル(5分)の高さのワク作って、
そこに放送時間分の高さの番組情報のdiv入れれば良いのでは?
前者でch×3分なり、5分毎のテーブル作って、
そのセルにoverflowを表示するdivタグで1セル(5分)の高さのワク作って、
そこに放送時間分の高さの番組情報のdiv入れれば良いのでは?
974デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 18:31:08.80ID:IP8gokNa0975デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/15(土) 18:41:00.51ID:t2Xo9ohCM >>960
「汎用的な言葉」とは?
俺の感覚では「列挙可能」はdefinePropertyで指定する {enumerable: true} の方で iterableとは別概念だが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
>>957の後半3行も根拠があなたの中にしかなくて意味不明だった。
状況的には「iterable === @@iteratorを持つ」で通じる事は>>959で示した通りだが、別の解釈があるなら教えて欲しい。
「汎用的な言葉」とは?
俺の感覚では「列挙可能」はdefinePropertyで指定する {enumerable: true} の方で iterableとは別概念だが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
>>957の後半3行も根拠があなたの中にしかなくて意味不明だった。
状況的には「iterable === @@iteratorを持つ」で通じる事は>>959で示した通りだが、別の解釈があるなら教えて欲しい。
976デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/15(土) 18:51:47.13ID:t2Xo9ohCM977あ (アウアウエー Sa66-HJuN)
2017/07/15(土) 19:10:25.30ID:OBAajcvKa >>974
まあ、表では無いからな。
divをabsoluteで配置して、インラインスタイルでtopを放送開始時間、bottomを放送終了時間にして、チャンネルのクラスつけて、
チャンネルのクラスはleftとwidth持ってりゃわりと綺麗かな。
まあ、表では無いからな。
divをabsoluteで配置して、インラインスタイルでtopを放送開始時間、bottomを放送終了時間にして、チャンネルのクラスつけて、
チャンネルのクラスはleftとwidth持ってりゃわりと綺麗かな。
978デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 21:04:26.61ID:IP8gokNa0979デフォルトの名無しさん (ワッチョイ 6e0b-qs1f)
2017/07/15(土) 21:37:06.43ID:r3inW3v40 >>975
列挙可能とは、反復処理にかけて次の要素、次の要素、次の要素、と取り出していける事を言う
enumerableは「要素が列挙される」ことが可能かどうか
ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
よって広義にイテラブルと呼ぶことは可能
原文でもコレクションがイテラブルだと言っている
つまりitemなどを備えるコレクションだということを強調するために使われているので問題はない
列挙可能とは、反復処理にかけて次の要素、次の要素、次の要素、と取り出していける事を言う
enumerableは「要素が列挙される」ことが可能かどうか
ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
よって広義にイテラブルと呼ぶことは可能
原文でもコレクションがイテラブルだと言っている
つまりitemなどを備えるコレクションだということを強調するために使われているので問題はない
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
- AIアーティストだけど作品公開する
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
