X



+ JavaScript の質問用スレッド vol.135 +
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2018/07/31(火) 12:30:52.90ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
0622Name_Not_Found
垢版 |
2018/10/20(土) 12:58:19.01ID:???
>>618
> しかし、セキュリティ的な問題か何かしりませんが
> html側のサーバーにはjsを効かせる事はできません。

>>614
> jsはcssと同じ外部サーバーに置けます。
ってかいたよな?

jsが使えないのに、わざわざ置けますって言ったのか?
そりゃ置くだけなら置けるだろうけど、動かないんじゃ
置いたって意味ないじゃん
0623Name_Not_Found
垢版 |
2018/10/20(土) 12:59:39.61ID:???
>>620
あんたのレスが「思い込み」と指摘されたからって
相手にも同じ言葉を無理やり使おうとしなくていいよw
日本語がおかしくなってる
0624Name_Not_Found
垢版 |
2018/10/20(土) 18:10:38.35ID:???
意見も希望も主観には変わらないわけで、その定義に拘って議論するのは馬鹿馬鹿しい
0625Name_Not_Found
垢版 |
2018/10/20(土) 18:19:53.51ID:???
>>619
はいそうです

>>621
なるほど、phpファイルのheaderでcssファイルとして認識させるようにすればいいんですね

>>622
はいそうです。直接jsファイルは読み込めません。すみません。
0626Name_Not_Found
垢版 |
2018/10/20(土) 22:51:18.80ID:???
>>625
もしくは.htaccessとかで-.cssが呼ばれた時-.phpを呼ぶようにcssを置くサーバーで偽装する
0627Name_Not_Found
垢版 |
2018/10/21(日) 01:24:35.87ID:???
>>621
こんだけ限定された条件だと
これに一票かなあ
0628Name_Not_Found
垢版 |
2018/10/21(日) 19:12:28.26ID:PfpMCgsw
初心者です。
if (!args.length) { 処理 } の条件を日本語訳してもらえませんか?
argsは変数なんですが、lengthは変数じゃないです。
変数argsの長さじゃなかったら? でしょうか。。おねがいします
0629Name_Not_Found
垢版 |
2018/10/21(日) 19:21:20.56ID:???
>>628
否定 javascript

falsy javascript
あたりで検索してみるとか
0630Name_Not_Found
垢版 |
2018/10/21(日) 19:25:53.72ID:???
lengthは長さを数値で返す
数値をそのまま条件にすると
0は否、0以外は正。
それを!で逆転してるので

長さが0であれば、の意。
※argsが存在して配列や文字列などlengthメソッドが働く前提
0632628
垢版 |
2018/10/21(日) 19:34:16.74ID:+KGIAcbR
ありがとうございます!よくわかりました。これで先に進めそうです。またお願いします
0633Name_Not_Found
垢版 |
2018/10/22(月) 16:24:37.89ID:???
適当に書くときはいいけど
慣れちゃうとちょっと怖いよね
args.lengthがundefinedでもnullでもfalseでも通っちゃうし
0634Name_Not_Found
垢版 |
2018/10/23(火) 20:39:26.75ID:???
>>633
それが排列であることを確定させているなら、問題はないかと
0636Name_Not_Found
垢版 |
2018/10/23(火) 21:20:03.47ID:???
NodeRedって流行ってるの?
知識ない自分の力量不足だけど使いにくい…
0638Name_Not_Found
垢版 |
2018/10/23(火) 22:49:46.08ID:???
>>636
ハイパーカードを思い出す
これでできる範囲のことであれば楽できるね
ってやーつだと思ってる
0639Name_Not_Found
垢版 |
2018/10/23(火) 23:39:33.33ID:???
>>638
簡単なUI作ったりするのは便利なんだけどDBとのやりとりとかExcelに出力したりさせようとしたら訳わからなくなって詰まった
こういうのをNodeRedでやろうとするのが間違ってるのかなぁと思ったり
0640Name_Not_Found
垢版 |
2018/10/25(木) 12:47:18.40ID:???
>>631
lengthはプロパティでもメソッドでもなくプロパティアクセス時にArrayの内部プロキシによって特別に扱われる名前
アクセサメソッドにも近い
0641Name_Not_Found
垢版 |
2018/10/25(木) 14:43:57.61ID:???
Pythonを学習中です。
Webの事は全くの素人です。
スクレイピングや可視化する際、CSS XPath JavaScriptなどの事が分からなくて行き詰まってしまいました。

PythonとJavaScriptではじめるデータビジュアライゼーションという本で詰まりました。
知人にJavaScript第5版という古い本をもらいましたが、言語仕様が延々と書いてあるような感じで、自分には早過ぎました。
CSS、XPath、JavaScriptこの辺りを体系的に学べるおすすめの本あったら教えて欲しいです。
0642Name_Not_Found
垢版 |
2018/10/25(木) 14:49:57.07ID:???
>>640
今でも読まれるたびに数えてんですかね?
0643Name_Not_Found
垢版 |
2018/10/26(金) 07:06:26.78ID:???
うろ覚えだが呼ばれるたびに数えてたことはなかっただろう
更新のたびに内部プロパティを更新してそれを読み出すような仕組みじゃなかった?
0645Name_Not_Found
垢版 |
2018/10/26(金) 12:56:08.60ID:???
getterでもsetterでもなくね
0646Name_Not_Found
垢版 |
2018/10/26(金) 13:05:10.89ID:???
>>641
HTML, CSS, JavaScript は、初心者用の本を読む。
CSS セレクターは、jQuery で学ぶ

または、CSS セレクター・XPath は、入門用サイトを見る

CSSセレクターは、jQueryの本に書いてあるけど、
XPathは、どの本にも書いていないから、入門用ウェブサイトを見る

XPathは重要度が低いから、無視してもよい。
CSSセレクターを使う方が、読みやすい
0647Name_Not_Found
垢版 |
2018/10/26(金) 20:12:27.73ID:???
プログラミングは体系的には学べない
分からなければ分かるようにならない
でもそこで諦めたらそこまで
「言語仕様が延々と書いてあるような感じ」と思ったのなら
分かったのが0ということではないはず
最悪書いてある日本語は読めるのだから、1万分の1は分かるだろう
なら5万回分読めばいい
そしたら1-(1-0.0001)**50000で0.9932637373893968で99%理解できる
分からなくてもほんの少しは分かるまで血を吐きながら無理やり頑張る
その繰り返しの修行で覚えるのがプログラミング
0648Name_Not_Found
垢版 |
2018/10/26(金) 20:44:33.09ID:???
俺もXPathは後回しでいい…ってかやらなくてもいいと思う。
昔はCSSセレクタより表現力高いからとか言われてたがよくも悪くもXML全般に使われる汎用仕様だからな。
HTML/CSS仕様に寄り添い、技術要素疑似セレクタも使えて素のJavascriptやjQueryなどでも手厚くサポートされているCSSセレクタ覚えたらWeb系技術以外扱わないならXPathなんて正直いつ使うんだっていう。
Javaとかやるなら別だけど…
あれか、Pythonと一緒にやろうとしたからPythonライブラリの都合に引っ張られちゃったんだな!
0649Name_Not_Found
垢版 |
2018/10/26(金) 21:02:05.71ID:???
>>647
書いてて恥ずかしくならない?
読んでて赤面したわw
0650641
垢版 |
2018/10/26(金) 21:35:04.99ID:???
どうもありがとうございます
結果的にPythonスレとマルチポストになってしまっていたらごめんなさい。

>>646
PythonスレのRubyの方ですかね?
その節はありがとうございます。
初心者用というのはHTML5の初心者という事ですよね?
よく分かる〇〇とかいちばんやさしい〇〇だとか過去に読んだことあるんですが、その手の本ってパソコンそのものの初心者が対象なのか、
〇〇のコードを使ったらハンバーガーメニューが出せますとか、このコードを使ったらこういうレイアウトに出来ます。今流行りのスマホPC両対応のレスポシブなんちゃらのカッコいいホームページを作ろう、みたいな。
そういう本って理屈は置いておいて、カッコよさげなホームページが作れた。よかったね、っていう感じの本だから、
それぞれのコードの中身や用語の解説じゃないから結局提示されたcssのコピペだけで終わり訳もわからず応用が利かず結局何も身に付かなかったです。
オライリーからPythonの本が大量に出てるけどそんな感じの本があればいいんですが。

>>647
やっぱ甘えてますね、自分。
辛いけど、出来るようになりたいから読むしかないのかぁ。
0651641
垢版 |
2018/10/26(金) 21:35:51.39ID:???
>>648
Webサイト作りそのものには全く感心は無いんですが、Pythonを学ぶうちに作ったデータの可視化をWebでやりたくなりました。
Pythonを学んだら今までは怖かったJavaScriptも基本的な文法はPythonで書いた場合を考えながらやればJavaScriptでもSwiftでもObjective-Cも何となく理解出来るようになりました。
JavaScriptもWeb用のナニカじゃなくて、これもPythonと同じプログラム言語だと分かったのでおもしろくなってきたました。

XMLを弄るにもXPathが分かれば簡単に弄れそうなんですが、XPathそのものが難しい。
Chromeの開発者ツールの使い方も分からないままだし。

>>649
けど、正論だと思いました。


オライリーからHTML5という本が出てますけれど、7年以上前の本だからやめておいた方がいいでしょうか?


>>641 で読んでる本の最初のページにこんなイラストが載ってました。
https://i.imgur.com/H3vQCNy.jpg
まさに自分もこんな認識です。
0652Name_Not_Found
垢版 |
2018/10/26(金) 22:05:29.26ID:???
>>651
セレクタを覚えるなら、jQueryよりCSSを覚えた方が良い
jQuery拡張記法を覚えても何にもならん
https://triple-underscore.github.io/selectors4-ja.html

XPathは今でもCSSセレクタ以上の事が出来るが、日本語の資料は多くないので、初心者向きではないだろうな
0654Name_Not_Found
垢版 |
2018/10/26(金) 23:44:44.27ID:???
getter, setterという場合、
Array(10).getLength();
Array(10).setLength(5);
などのようにメソッドの形を取る。

Array(10).length = 1;
は上のsetLengthとやることは同じだが、(実装はどうあれ)プロパティ形式を取っているのでsetterとは呼ばない。

なお説明に使っただけでArrayにgetLength、setLengthとあったメソッドは無い。
0655Name_Not_Found
垢版 |
2018/10/27(土) 06:58:31.07ID:???
TypedArrayのlengthはgetter,setterだが
Arrayのlengthは内部プロキシが特別に扱っている名前というだけ
0657Name_Not_Found
垢版 |
2018/10/27(土) 10:10:23.05ID:???
>>656
Atrayのlengthはset/getが使えなかったときからある。だから>>655
0658646
垢版 |
2018/10/27(土) 18:26:45.84ID:???
漏れが、XPath を使うのは、CSS セレクターでできない場合だけ。
例えば、5ch の書き込み内のa タグを抜き出すなら、

このCSSセレクターでできるけど、
div.thread > div.post > div.message > span > a

a を含む、post_node だけを抜き出す場合、
div.message の子孫で、aタグを含むものがある場合、
そのaタグの祖先のdiv.post を抜き出す。
(自分の処理では、div.postを主体に処理している場合)

CSSセレクターでは、div.message div.post a

descendant は子孫、ancestor は祖先。
post_nodes = doc.xpath "//div[@class='thread']/div[@class='post']/div[@class='message']/descendant::a/ancestor::div[@class='post']"

子孫に何々要素がある場合の、その祖先を求めるとか、
条件が複雑で、CSSセレクターでは表せない場合だけ、XPathを使う

jQueryのCSSセレクター一覧表を見て、それでできなければ、XPathを使う
0659Name_Not_Found
垢版 |
2018/10/27(土) 19:38:24.03ID:???
:has擬似クラスが仕様に入ったからXPathの出番はますます無くなる
0661Name_Not_Found
垢版 |
2018/10/27(土) 23:59:35.53ID:???
jQueryは:hasに独自で対応しているから、JavaScriptでは
もうXPathの出番はなくなってるね。
0662Name_Not_Found
垢版 |
2018/10/28(日) 00:21:16.71ID:???
XPathってJavaScript以外で使えたっけ?
jQueryで:hasが使えるならもういらないような
0663Name_Not_Found
垢版 |
2018/10/28(日) 00:36:19.99ID:???
>>662
なに言ってんだ各言語にライブラリ出てるよXPathくらい…
0664Name_Not_Found
垢版 |
2018/10/28(日) 08:23:02.53ID:???
>>657
その理屈はおかしい
lengthはProxyがない時代からある
0665Name_Not_Found
垢版 |
2018/10/28(日) 11:37:15.18ID:???
漏れは、Ruby のNokogiri で、XPath, CSS セレクターを使っている
0668Name_Not_Found
垢版 |
2018/10/28(日) 14:38:20.99ID:???
Proxy APIの話ではなくプロパティが設定されるときに働く
[[DefineOwnProperty]]内部メソッドをオーバーロードしてlengthを書き換えてることを
分かりやすく内部プロキシと言い換えただけなのにね
0669Name_Not_Found
垢版 |
2018/10/28(日) 22:26:18.35ID:???
漏れ、って久しく見ないな
懐かしい
0670Name_Not_Found
垢版 |
2018/10/29(月) 09:06:25.00ID:???
>>666-658
同じ言葉をそっくり>>657に返したいね

> Atrayのlengthはset/getが使えなかったときからある。だから>>655
setがなくても、setterとして機能があればsetterだろう
lengthプロパティ代入時に処理が働くのだから、setter以外にそれを実現する方法はない

ついでにいうと、>>654もおかしい
プロパティだからsetterじゃない、とかどの言語の話だ?
0671Name_Not_Found
垢版 |
2018/10/29(月) 09:11:35.57ID:???
>>668
>>653からどうしてその話が出てくるんだ?
おまえのいってるのは、
Array(1)[3] = 1;
だろう
0672Name_Not_Found
垢版 |
2018/10/29(月) 10:27:51.41ID:???
Proxyでのハンドリングもsetterと言うのならArray#lengthもsetterと呼んでいいと思うけど
普通JSでsetterって言ったらプロパティディスクリプタがアクセサタイプでsetにメソッドが入ってる状態を言うと思うけどな
0673Name_Not_Found
垢版 |
2018/10/29(月) 10:29:06.09ID:???
>>671
いや、数値文字列と、lengthの2種類ともを特別に扱ってるんだよ
0676Name_Not_Found
垢版 |
2018/10/29(月) 19:41:22.88ID:???
MDNはprototype経由せずDateやらArray やらから直接生やされたメソッドを静的なメソッドと表現したりクラスベースの人に配慮した柔軟な記述見かけるよね。
0677Name_Not_Found
垢版 |
2018/10/30(火) 06:56:22.75ID:???
>>674,675
その疑問は全てここまでに書かれてるよ
もう一度読み直してみて
0678Name_Not_Found
垢版 |
2018/10/30(火) 08:34:44.71ID:???
>>677
> [[DefineOwnProperty]]内部メソッドをオーバーロードしてlengthを書き換えてることを
> 分かりやすく内部プロキシと言い換えただけなのにね

これがProxyの条件か?
ただの内部 プロパティを書き換えるだけでProxy扱い
しかも、Array(19).length = 1; 時に [[DefineOwnProperty]] が書き換わらんし、到底理解できんな
0679678
垢版 |
2018/10/30(火) 08:40:23.79ID:???
> しかも、Array(19).length = 1; 時に [[DefineOwnProperty]] が書き換わらんし、到底理解できんな

訂正する
Array(19)[1] 以降が削除されるので、[[DefineOwnProperty]] は確かに書き換わる
しかし、他所のプロパティ [[DefineOwnProperty]] が書き換わるだけで、lengthプロパティはProxyの動きをしていない
0680Name_Not_Found
垢版 |
2018/10/30(火) 09:16:03.64ID:???
こういう事かな

const a = [];
a[0] = 1; // 668「a[0] はProxyなプロパティです」→OK
a.length = 0; // 668「a[0]を書き換えるa.lengthもProxyなプロパティです」→ん?

この場合、a.lengthを書き換えるa.fooを定義したら、a.fooもProxyになる
Proxyが感染していく
0681Name_Not_Found
垢版 |
2018/10/30(火) 12:07:55.19ID:???
hey YO! チェケラッチョ!
0682Name_Not_Found
垢版 |
2018/10/30(火) 12:55:41.57ID:???
>>679
大きな勘違いしてるね、Arrayのインスタンスオブジェクトはlengthと言う通常のプロパティを持っているが
それと同時に数値文字列と"length"という文字列のプロパティ設定に関して特別な振る舞いをするんだよ
つまりProxyのようなのはArrayのインスタンスの事であって、
そのプロキシは"length"プロパティアクセスがあると、間接的にlengthプロパティを設定して配列の要素を調整すると言う動作をするんだよ
ただし、setterとは違うという話
0683Name_Not_Found
垢版 |
2018/10/30(火) 13:09:50.35ID:???
ようそこまで内部動作把握してるな
こういう人はそんなの当然って言うんだけど大半の人はそんなの無理
0684Name_Not_Found
垢版 |
2018/10/30(火) 14:08:55.83ID:???
アニメスレに沸く小説板から来た設定厨を思い出しました。
0685Name_Not_Found
垢版 |
2018/10/30(火) 19:02:56.34ID:???
>>682
勘違いなどしていない
setterのトラップで内部プロパティが書き換わるだけ
setter以外のトラップが必要なら、それを示してくれ
0686Name_Not_Found
垢版 |
2018/10/30(火) 19:11:18.70ID:???
>>681
やっとわかった
ラッパーって言いたいのかw
0687Name_Not_Found
垢版 |
2018/10/30(火) 19:19:02.36ID:???
>>686
誰もわかってくれないからって自己レスするな
0688Name_Not_Found
垢版 |
2018/10/30(火) 19:23:08.67ID:???
>>668は確かにwrapperって感じだが、wrapperとsetterは両立出来るんだよなあ
0689Name_Not_Found
垢版 |
2018/10/30(火) 20:13:36.59ID:???
わかっててスルーしてるにきまっとるじゃろ
0690Name_Not_Found
垢版 |
2018/10/30(火) 21:00:05.07ID:???
ぶっちゃけ、>>653がsetterで実装できなくて、Proxyでなければ実装できない機能って何なの?
0691Name_Not_Found
垢版 |
2018/10/30(火) 21:50:37.00ID:???
>>685
勘違いというか、全く分かっていなかったんだね
実際Arrayオブジェクトのlengthはsetterではないということが話の肝

Arrayのlengthは普通のオブジェクト固有のプロパティだ
Object.getOwnPropertyDescriptor( Array(1), 'length' )
// {value: 1, writable: true, enumerable: false, configurable: false}

参考までにTypedArrayのlengthは共通親クラスから継承したgetterだ
Object.getOwnPropertyDescriptor( Uint8Array.__proto__.prototype, 'length' )
// {get: ƒ, set: undefined, enumerable: false, configurable: true}

ならArrayのlengthへ値を代入したときの振る舞いなどはどう説明するのかといえば、
Arrayオブジェクトのプロパティ設定のトラップでlengthを特別扱いしてるということだ
そしてそれはもちろんsetterとは違う

言い換えればArrayオブジェクトはそのただ1点を除いて普通のオブジェクトと何にも変わらない
[ 'a', 'b', 'c' ]は{ '0':'a', '1': 'b', '2': 'c', 'length': 3 } と全く違いはない
ただたった一つ、[[DefineOwnProperty]]内部メソッドの振る舞いが違う、
プロパティアクセス時に'length'と数字プロパティへの設定を特別に監視するということだけが
ArrayをArrayたらしめてる理屈
0692Name_Not_Found
垢版 |
2018/10/30(火) 22:04:42.06ID:???
>>679のこの行がそもそもだいぶトンチンカン
>>Array(19)[1] 以降が削除されるので、[[DefineOwnProperty]] は確かに書き換わる
[[DefineOwnProperty]]は内部「関数」なのだから、書き換わったりしない、呼ばれる対象
そしてlength要素に設定時に適宜配列のプロパティが消されるから呼ばれるのではなくて、
length要素設定時にこれが呼ばれたときに間接的にプロパティを消してる、因果が逆
因みにプロパティが消されるときに呼ばれるのは[[Delete]]
[[DefineOwnProperty]] はこの場合関わらない
0694Name_Not_Found
垢版 |
2018/10/30(火) 23:28:54.54ID:ROO+RjWt
そもそも、length に設定するのが、おかしい。
意味不明のソースコード

普通は参照しかしない
0697Name_Not_Found
垢版 |
2018/10/31(水) 15:55:58.36ID:???
new Int8Array([1,2,3]).__lookupGetter__('length')
//=> f length() { [native code] }
[1,2,3].__lookupGetter__('length')
//=> undefined

ほんまやTypedArrayのlengthにはGetter設定されてるけどArrayは無い
0698Name_Not_Found
垢版 |
2018/10/31(水) 15:56:05.22ID:???
だからtypeof new Arrayは'object'なんだよな
そこしか違いがないから
0699Name_Not_Found
垢版 |
2018/11/01(木) 02:16:21.76ID:???
大雑把にはわかっていたつもりだったけど
詳しい説明ありがたいわ
0700Name_Not_Found
垢版 |
2018/11/02(金) 09:27:19.04ID:33ufQNJG
jQueryの.nextUntil() をJavaScriptで書くのは難しいでしょうか?
0701Name_Not_Found
垢版 |
2018/11/02(金) 11:56:52.88ID:???
>>700
難しいかどうかはその人のスキルによるとしか。。。
0702Name_Not_Found
垢版 |
2018/11/02(金) 13:12:13.08ID:???
困難かという意味ではそうでもないかも
parentNodeのChildNodesを、その要素以降順に見ていくだけだから
ていうか、jQueryだってJSで書かれているわけだしね
0704Name_Not_Found
垢版 |
2018/11/02(金) 14:57:52.92ID:???
質問を変えて、jQueryの.nextUntil()をDOM API以外のライブラリを使わずに
10行以内(セミコロン不使用、横80文字まで、普段やらない書き方を使うのなし)で
作れるでしょうか?だったらどう?
0705Name_Not_Found
垢版 |
2018/11/02(金) 15:08:06.56ID:???
まず親要素のquerySelectorAllで
セレクタにマッチする小要素を全部取り出しておく

目的の要素のnextSiblingが、上のマッチした要素群に含まれれば当たり
なければ次のnextSiblingを見る

なんとか80字でいけるか?
0706Name_Not_Found
垢版 |
2018/11/02(金) 15:22:12.61ID:???
全部取り出しておいてfilterしてもいいし、
ただ単に次の要素を見ていくだけのイテレータでもいい
5行くらいの関数で書けるんじゃない?
0708Name_Not_Found
垢版 |
2018/11/02(金) 18:30:13.65ID:???
はー
matchesなんてあったんだな
勉強になる
0710Name_Not_Found
垢版 |
2018/11/03(土) 07:10:10.07ID:???
function * nextUntil ( el, sel ) {
while ( el = el.nextElementSibling && ! el.matches( sel) )yield el
}
0711Name_Not_Found
垢版 |
2018/11/03(土) 22:22:33.52ID:6Ec8PRLb
>>707
上手く行きました。
凄いですね、こんなのを書けるなんて。
>>710
私にはレベルが高すぎて付いて行けません。
結果の取り出し方を教えて下さい。
0712Name_Not_Found
垢版 |
2018/11/03(土) 22:44:24.52ID:???
>>710は単なる技術マウントだから無視してよい。
0714Name_Not_Found
垢版 |
2018/11/04(日) 03:23:50.49ID:???
技術マウントだからと言って無視するか、
技術を勉強するか

どちらを取るかね?
0715Name_Not_Found
垢版 |
2018/11/04(日) 04:32:09.76ID:???
>>711
>>710は代入演算子と論理積演算子の優先順位を間違えているから結果がバグっている。
修正してオプションのfilter足してjqueryのnextUntilの
http://js.studio-kingdom.com/jquery/traversing/next_until
のデモと同じことする使い方を
https://codepen.io/anon/pen/VVwdQB
に上げた。
しかし結果を配列でまとめて取り出す使い方しかしないなら
https://codepen.io/anon/pen/YRzvWa
みたいになりわざわざジェネレータ使う意味ないしこんなことするなら>>707のほうがいいな。
0716Name_Not_Found
垢版 |
2018/11/04(日) 06:28:04.76ID:???
一番いいのはjQueryを使うこと
0717Name_Not_Found
垢版 |
2018/11/04(日) 10:01:07.40ID:plxWY2l1
>>715

=>
...
yield
など知らない文法ですが、テストしたら動きました。
大変参考になりました。このコードが理解出来るように勉強します。

ところで707 nextUntilを応用してnextAllを作ってみたのですが、これで良いでしょうか?

function nextAll(el, selector) {
const result = [];
while (el = el.nextElementSibling) {
result.push(el);
}
return result;
}

一つ質問ですが、const指定しているresult変数に値を代入しても良いのですか?
定数なら変更してはいけないような印象を受けるのですが。
0720Name_Not_Found
垢版 |
2018/11/04(日) 11:18:37.07ID:plxWY2l1
>>719
良く分からないのですが、
C言語などならconst指定があると値を代入出来ませんよね。
JavaScriptのconstはそうでは無いのですか?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況