+ JavaScript の質問用スレッド vol.123 + [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/02(日) 23:30:38.56ID:Qcd0Qmy10
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:vvvvvv:1000:512:----: EXT was configured
2021/06/02(水) 20:54:14.32ID:zWQOQ4Z00
他の言語とかフレームワークのスレ行ってみたけど糞みたいな流れでうんざりしました
ここの住人いい人多かったのね…
いつもありがとうございます。
2021/06/03(木) 02:44:28.14ID:Ers5yK+g0
本当は、web制作管理板で、JavaScript のスレを立てるべきだけど、誰も立てない。
jQuery のスレはある

この板のスレは、web制作管理板が荒らされた時に、緊急避難用に立てられたもので、
本来は板違い
2021/06/03(木) 07:23:01.03ID:5tjzxwfy0
Web制作板は荒れ放題だったし、存在価値を感じない
質問者のマナーの悪さはこちらでも変わらない
497デフォルトの名無しさん (ワッチョイ 66cb-muMV [223.132.6.112])
垢版 |
2021/06/03(木) 12:05:06.51ID:IjUlafEd0
>>493
jqueryありじゃないとだめなのですか。
なんにしろ見出しにidを付与しないとだめですよね
2021/06/03(木) 12:11:00.36ID:Ers5yK+g0
素のJavaScript は、ややこしい

そのブログシステム自体が、jQuery を使っているかも知れない。
その場合、そのまま使えるかも
499デフォルトの名無しさん (ワッチョイ 66cb-muMV [223.132.6.112])
垢版 |
2021/06/03(木) 12:22:40.14ID:IjUlafEd0
jQuery学ぶのも大変なのでjsでやろうとしてます
とりあえず動的にidを追加することがまず必要ですよね
2021/06/03(木) 13:24:01.98ID:OUEycLqE0
idを付けずに実現するとしたら……
・querySelectorAll()で見出し要素をリストアップして表示
・それぞれのonclickイベントにwindow.scrollBy()でその要素の座標に飛ぶ関数を充てる
とか
2021/06/03(木) 14:33:40.15ID:yp2V3QDA0
>>492
テンプレのFAQ>>3が素のJSで書いていた
hx要素を拾ってid拾うだけだし、そんなに難しくはない
2021/06/03(木) 14:36:56.38ID:yp2V3QDA0
>>499
@適当なプレフィックス文字列を指定して、後ろに連番を付ける
Aid衝突確認→衝突したらインクリメントし続ける
503デフォルトの名無しさん (ワッチョイ 66cb-muMV [223.132.6.112])
垢版 |
2021/06/03(木) 16:51:19.75ID:IjUlafEd0
>>500 501 502
ありがとうございます。
つまづいたらまた来ます。
2021/06/03(木) 17:35:57.65ID:T3CLqBZA0
>>499
jQueryは学習コストめちゃんこ低いよ
慣れたら素のJSでDOMいじるのだるくなる
505デフォルトの名無しさん (ワッチョイ 43ca-0h5H [36.3.90.170])
垢版 |
2021/06/03(木) 20:57:45.05ID:Lw6VCoxx0
教えてください。
https://gist.github.com/withmama/2925509

(function (global, oDOC, handler) {
〜中略〜
if (oDOC.readyState == null && oDOC.addEventListener) {
oDOC.readyState = "loading";
oDOC.addEventListener("DOMContentLoaded", handler = function () {
oDOC.removeEventListener("DOMContentLoaded", handler, false);
oDOC.readyState = "complete";
}, false);
}
})(window, document);

上記のようなコードがあるのですが、引数にhandlerに値を渡していないのに
handlerが引数にあります。
これって何か意味があるのでしょうか?

(function (global, oDOC) {
var handler;
if (oDOC.readyState == null && oDOC.addEventListener) {
oDOC.readyState = "loading";
oDOC.addEventListener("DOMContentLoaded", handler = function () {
oDOC.removeEventListener("DOMContentLoaded", handler, false);
oDOC.readyState = "complete";
}, false);
}
})(window, document);
っでよくないでしょうか?
2021/06/03(木) 21:06:53.79ID:yp2V3QDA0
>>505
関数スコープで変数を生成するだけならどっちでもいい
最も変数はなくても実装可能だが
2021/06/03(木) 21:20:16.57ID:yp2V3QDA0
>>505
そもそも、readyStateは読み取り専用なのに再代入するとは…
仕様を理解しているとは思えんコードだな
508デフォルトの名無しさん (ワッチョイ 43ca-0h5H [36.3.90.170])
垢版 |
2021/06/03(木) 22:32:19.08ID:Lw6VCoxx0
>>506
ありがとうございました。関数で変数生成しているのですね。
よく考えますと handler = function () でなくてもいいですね。下記のように。
oDOC.addEventListener("DOMContentLoaded", function() {
oDOC.removeEventListener("DOMContentLoaded", handler, false);
oDOC.readyState = "complete";
}, false);

>そもそも、readyStateは読み取り専用なのに再代入するとは…
そういえば、readyStateって勝手に値が変わるはずなのに、代入しないですね普通。
2021/06/03(木) 22:54:07.50ID:bve/jcTT0
>>508
それじゃremoveEventListenerに渡してるhandlerが…
でもそのブロックの上のコメント見るとFirefox3.5以下用のポリフィルみたいだから今時いらんでしょ
2021/06/03(木) 23:08:16.39ID:yp2V3QDA0
>>508
あなたのコードが間違っているのは2回目なんだが… >>460
検証済のコードを示すように心がけた方がいい
511デフォルトの名無しさん (ワッチョイ 43ca-0h5H [36.3.90.170])
垢版 |
2021/06/03(木) 23:12:45.89ID:Lw6VCoxx0
/*
if (oDOC.readyState == null && oDOC.addEventListener) {
oDOC.readyState = "loading";
oDOC.addEventListener("DOMContentLoaded", handler = function() {
oDOC.removeEventListener("DOMContentLoaded", handler, false);
oDOC.readyState = "complete";
}, false);
}*/

こうですね。ありがとうございます。
2021/06/03(木) 23:53:51.85ID:Lw6VCoxx0
>>510
はい。ありがとうございました。
513デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 11:50:08.32ID:s3nDY94/0
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/link
javascriptではクラスという概念はないのでしょうか?
リンク先はdocumentクラスのlinkプロパティと考えているのですが、クラスという文字が出てきませんね。
514デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 11:56:45.37ID:s3nDY94/0
連投すみません。
prototypeというのは、クラスのプロパティにアクセスするための記述と考えてもいいでしょうか?
prototype=組み込み、といった意味だと思いますし、、、。
515デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 12:13:36.89ID:s3nDY94/0
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/link
javascriptでlinkメソッドが非推奨になったようですが、代わりに何を使ってリンクをつけるんでしょうか?
2021/06/04(金) 12:14:09.97ID:srwg4nuv0
>>513
糖衣構文としての class はあるが、クラスの概念はない
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes

[[Prototype]] とプロトタイプチェーンの理解が必要
2021/06/04(金) 12:19:22.31ID:srwg4nuv0
>>514
組み込みはビルトイン
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects

プロトタイプは原型の意だろう
https://www.weblio.jp/content/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97
https://developer.mozilla.org/ja/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
2021/06/04(金) 12:20:38.14ID:srwg4nuv0
>>515
createElement
https://developer.mozilla.org/ja/docs/Web/API/Document/createElement
519デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 18:27:11.43ID:s3nDY94/0
let get_ul = document.querySelector("#test_ul");
let str = "hogehoge";
get_h2.insertAdjacentElement("beforebegin",str);

こうするとstrはオブジェクトじゃない、というエラーが出ます。
javascriptにおいてのオブジェクトとは、dom、つまりhtmlの構造を持つもののことでしょうか?
文字列を入れたいのなら、htmlと連結するのでしょうか。

>>516,517,518
ありがとうございます。全部見させてもらいます。
2021/06/04(金) 18:29:25.67ID:i71rVHGC0
insertAdjacentText
521デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 18:32:49.09ID:s3nDY94/0
↑上でやりたかったことはタグの中に文字列を挿入したかったのです
<a></a>
↑ここに「あああ」をはさみたいのです
innnerhtmlより、insertadjacenthtmlがいいと聞いて使ってみたんですが、文字型はオブジェクトじゃないと、、、。
2021/06/04(金) 18:38:54.51ID:srwg4nuv0
>>521
textContent
createTextNode
2021/06/04(金) 18:44:54.98ID:srwg4nuv0
>>519
あなたはまず、DOMのノードの概念を学んだ方がいい
https://uhyohyo.net/javascript/2_1.html
HTMLタグで捉えるから本質とかけ離れた考え方をするようになる
524デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 18:56:14.50ID:s3nDY94/0
>>522
回答どうも
タグで包んだ場合はいけました

文字列だけの場合はtextContentですね

しかし、これはすべての内容物を書き換えてしまいます
そこでinsertadjacentを使いたかったです
2021/06/04(金) 19:14:18.33ID:srwg4nuv0
>>524
挿入ならappendChildでも良い
526デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 20:28:32.31ID:s3nDY94/0
>>525
ありがとうございます。
オブジェクトとそうでないものの違いってなんでしょうか?
全てはオブジェクトだと思うんですが。
stringはオブジェクトじゃないと。
527デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/04(金) 21:09:03.37ID:s3nDY94/0
連投すみません。
既存のタグの中にある文字を挟み込むように、新たなタグを挿入するにはどうしたらいいのでしょうか?

<div id="target_div">もじ</div>
↑これを
<div id="target_div"><p>もじ</p></div>
↑こうしたいです

let target = document.querySelector("#target_div");
let parag = document.createElement("p");
target.insertBefore(spa);

https://gray-code.com/javascript/add-html-element/
appendChild,before,after,insertBeforeはどれも違うようです。
前のpと閉じpを別に挿入することはできそうです。

まずtarget_divに対してpタグを先に追加して、innerhtmlで文字列を挿入したほうがいいのでしょうか?
2021/06/04(金) 21:45:58.82ID:srwg4nuv0
>>526
オブジェクトでもあるが、ノード
困ったらMDNを読めば大体分かる
https://developer.mozilla.org/ja/docs/Web/API/Node/appendChild

>>527
replaceChild

いい加減、体系的に学ばないとリファレンスが読めるようにはならないと思うが >>523
529デフォルトの名無しさん (ワッチョイ 7369-RZYr [114.171.63.103])
垢版 |
2021/06/05(土) 21:16:58.18ID:LNHYK+7R0
javascriptでボタンを押したときにaaaという変数の値(現在100)を変えるには
<input type="hidden" id="aaa" value="200">というのを作って
ボタンを押したときに
var aaa = document.getElementById("aaa").value;を呼び出すというやり方でやっていますが
この方法以外で変数の値を変えるやり方あったら教えてください
2021/06/05(土) 21:54:26.82ID:i9T/HxKS0
>>529
ボタンが押されたどうこうは変数値を変える機能に直線関係していない

変数値を変えるのは代入演算子
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Assignment
グローバル変数ならdefineProperty等のプロパティ操作系機能も使える
531デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/06(日) 06:22:02.86ID:weTrX2zS0
>>528
オブジェクトの種類の1つがノードってことですね
yagniってのを信じてて、使うことだけを勉強すると

>>523
domってのはつまり、ただの階層構造ですよね
2021/06/06(日) 07:01:24.97ID:AEZk3bsc0
現実で実践するのは良いがやり過ぎは友達無くすよ
文字通り要らんのかもしれんけど
533デフォルトの名無しさん (ワッチョイ a301-9b/0 [126.29.60.171])
垢版 |
2021/06/06(日) 09:39:10.77ID:6dX5kGmx0
javascriptの書物とか動画のおすすめとかある?
すでに書かれてあったらスマソ
534デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/06(日) 11:35:27.06ID:weTrX2zS0
javascriptでは単なる文字列はオブジェクトではない、とみなされるようです
ノード(つまりタグ)に対して付与されるものであって、文字自体はオブジェクトじゃないということですよね
2021/06/06(日) 12:08:34.85ID:uClmKKSG0
んなあワケない
536デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/06(日) 12:46:12.70ID:weTrX2zS0
>>535
どうも勘違いしていたようです
使用している関数の引数として適切ではないという意味だったようで
537デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/06(日) 12:57:18.59ID:weTrX2zS0
insertAdjacentTextとinsertAdjacenetHtmlの違いってなんでしょうか?
<div>あああ</div>
どちらでも↑を↓の状態に出来ました。
<div><span>あああ</span></div>

動作の違いは感じられませんが
538デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/06(日) 13:11:29.85ID:weTrX2zS0
↑ああ、分かりました
adjacenthtmlだと、"<span>"などとしたときに閉じタグが付与されますね 勝手に
2021/06/06(日) 13:47:28.77ID:deO9fsXQ0
これは、プロ用の初心者向けの本。
かなり難しい

初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017
2021/06/06(日) 17:40:54.85ID:HeHF5+P0d
開眼JavaScript
541デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/06(日) 19:54:43.32ID:weTrX2zS0
vscodeでjavascriptをhtml外から呼び出した場合、補完は効かないのですか?
htmlファイルとjsファイルを分けた場合、jsファイルでhtmlのidを取りたいなんていう場合
入力補完は当然出ません

このような場合はどうしてるのでしょうか?
2021/06/07(月) 14:09:10.93ID:Y/i97Tuu0
10数年ぶりにプログラミングやってみようかなと思い立った初心者です
JavaScriptをやってみようと思っているのですが、学習ルートとしてまずES6
その後TypeScriptに行くべきか、Reactに行くべきか迷っています
AltJSとフレームワークなので一概にどちらが先とは言えないかも知れませんが、あえて選ぶならどちらから学ぶべきでしょうか?
もちろん最終的にはReactをTypeScriptで書いてWebアプリを作ってみたいと思っています
どっちでも良いと言われるような気はするのですが、それでもあえて諸先輩方のご意見をお伺いしたいです
2021/06/07(月) 14:43:46.50ID:OvPzoGrd0
いずれTypeScriptやること決めてるならわざわざJavaScript挟む意味ない
TypeScriptやってReact進めばいいだろ
544デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/07(月) 17:15:28.63ID:cP5Yb5w50
javascriptのオブジェクトが、多言語でのクラスということですか?
2021/06/07(月) 17:28:09.54ID:OvPzoGrd0
違います
そもそも他言語のクラスとかひとまとめに我こそがスタンダードみたいに言うけど、そのクラスの用法ってクラスベースオブジェクト指向特有のものでしょ。
まぁJSも追従しちゃったけどさ。
2021/06/07(月) 17:29:49.37ID:PmtxqO8T0
ボクのオブジェクトも暴発しそうです
2021/06/07(月) 17:35:37.04ID:PmtxqO8T0
父のプロトタイプから包茎を継承してしまったようです
2021/06/07(月) 17:42:33.71ID:toxQnbWm0
(;´д`)
2021/06/07(月) 18:28:53.16ID:50KNDDY70
>>544
https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%99%E3%83%BC%E3%82%B9#%3A%7E%3Atext%3D%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%99%E3%83%BC%E3%82%B9_%28%E8%8B%B1%3A_class-%2C%E3%81%99%E3%82%8B%E3%80%81%E3%81%A8%E3%81%84%E3%81%86%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9#%3A%7E%3Atext%3D%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9_%28%E8%8B%B1%3A_prototype-%2C%E3%82%92%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A8%E5%91%BC%E3%81%B6%E3%80%82
2021/06/07(月) 18:46:01.96ID:50KNDDY70
>>542
その二択ならTypeScript
文法を先に学ばないと躓く

ES6は2015年の仕様で今から学ぶには古すぎる
ES2020を学ぶ方が効率は良い
http://www.ecma-international.org/ecma-262/11.0/
2021/06/07(月) 19:06:44.87ID:XflghCQg0
うせやろ
ES6で古いんだ
IE対応しないと駄目だったのでアロー関数使ってないから忘れたのに…
もう駄目だな…
2021/06/07(月) 19:18:18.21ID:50KNDDY70
>>551
IEをサポートする必要かあるのか、検討すべきでは?
https://docs.microsoft.com/ja-jp/lifecycle/faq/internet-explorer-microsoft-edge#internet-explorer--------------------------
https://kangax.github.io/compat-table/es2016plus/
553デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/08(火) 11:33:50.39ID:V6KC1q9F0
オブジェクトリテラルはプロパティと同義ですかね?
オブジェクトの持つデータですよな
2021/06/08(火) 12:01:34.57ID:pZSU03Zb0
>>553
違う

あなたは先日からおかしな前提の質問ばかり
知識の穴が多すぎて一問一答で出来る範囲を超えている
YAGNI信じてるようだが、必要になったら基礎学習する習慣をつけるべき
2021/06/08(火) 12:26:14.97ID:Vw+6EMs10
> prototype=組み込み、といった意味だと思いますし、、、。


専門用語が分からない

そうだ英単語の意味から推測しよう

英単語の意味から間違えている

いくらなんでも酷すぎ
プログラミング関係なく問題解決の取り組み方が杜撰で稚拙すぎ
辞書引くことすら失敗するとか一体どういう教育受けてきたの
2021/06/08(火) 18:29:25.55ID:pZSU03Zb0
自分で調べるより専門家に聞いた方が早いと思うタイプの人なんだろう

>>555のようにちょっと調べればわかるはずの内容を質問したり、回答したURLを全く読んでないかのような反応が返ってくる
DOMもプロトタイプチェーンも学習した形跡がない
2021/06/08(火) 18:39:03.92ID:spIl1qf+M
忍耐強く付き合ってくれる方々が居るうちはYAGNIで上手く行くのかも知れない
早々に匙を投げてしまった自分が言える立場じゃないけど
2021/06/08(火) 21:06:17.76ID:6yn9zQdn0
オナニーメソッドは定義されてますが
セックスメソッドが見当たりません
559デフォルトの名無しさん (ワッチョイ 7fad-3tT5 [27.141.86.23])
垢版 |
2021/06/09(水) 11:50:43.35ID:+7j1Uic/0
C#の拡張メソッドはやってることが分かりやすいね
staticと宣言され、thisが第1引数
ただ宣言と利用で引数が違うのが気持ち悪い

C#で基礎的に多い使いどころはnull処理や型変換
なんでも型としてobjectがあるので
でもやたら型に煩いので中の分岐が面倒

javascriptの引数は全てなんでも型だが、逆にprototypeのthisだけは型が必要
なので、null処理や型変換は、普通の関数にしてる
そもそも「メソッドチェーンはnullで止まる」とか、最初から言われてたり
2021/06/09(水) 12:14:45.43ID:mxnL56NS0
>>559
> javascriptの引数は全てなんでも型だが、逆にprototypeのthisだけは型が必要

後半はちょっと意味がわからない

this値はStrictModeで指定値をそのまま使い、SloppyModeで指定値をObject型に変換した値を使う
型の制約はないはず
561デフォルトの名無しさん (ワッチョイ 7fad-3tT5 [27.141.86.23])
垢版 |
2021/06/09(水) 12:35:56.32ID:+7j1Uic/0
>>560
失礼、nullが駄目なだけだね
2021/06/09(水) 12:40:37.25ID:muvslTP60
オナホールに型があるとは知りませんでした
密閉型のつもりで射精したら貫通型だったらしくリークしてしまったようです
563デフォルトの名無しさん (ワッチョイ 6fcb-zjai [223.132.6.112])
垢版 |
2021/06/09(水) 13:01:14.82ID:+7DuCF3D0
arrayとDocument.createDocumentFragment()の違いってなんでしょうか?
createElementで作成したタグを、ターゲットに複数追加したい場合、後者を使います。
しかし、arrayにもアンカーは格納されているようです。
2021/06/09(水) 13:53:10.87ID:mxnL56NS0
>>561
nullでも問題はない
実証コードを書いて、問題が起きるパターンを整理してみては?
Object.prototype.toString.call(null)
2021/06/09(水) 13:54:10.75ID:mxnL56NS0
>>563
回答スルーして新規質問を量産してるが、何がしたいんだ?
2021/06/09(水) 14:01:43.46ID:w6w52mg40
createDocumentFragment は、jQuery でも使っている

ソースコード内を検索してみ
567デフォルトの名無しさん (ワッチョイ 7fad-3tT5 [27.141.86.23])
垢版 |
2021/06/09(水) 15:23:28.36ID:+7j1Uic/0
>>564
Object.prototype.foo=function(s){略}
null.foo() こう書けないなら

function foo(s){略}
foo(null) こうせざるを得ない、ということなんですが

null.foo().bar() この利点は
bar(foo(null)) これより目に優しいという
2021/06/09(水) 18:17:53.95ID:mxnL56NS0
>>567
いろいろと誤解があるので、プロパティアクセサ、プロトタイプチェーンについて再学習することをお勧めする
(ちなみに、あげられている問題は「this値」は全く関係していない。用語定義も見直したほうが良いと思う。)

Object.prototype.foo を定義してfooプロパティを参照できるのは、new Objectかプロトタイプチェーン上に Object.prototype が存在するオブジェクトに限定される
プロパティアクセスする際、それがPrimitive値であるなら、Object型に変換してプロパティ参照を試みるが、null, undefined はObject型に変換できず、TypeErrorとなる

(null).toString; // TypeError: Cannot read property 'toString' of null
(undefined).toString; // TypeError: Cannot read property 'toString' of undefined

なお、null,undefinedでなくても、プロトタイプチェーン上に Object.prototype が存在しなければ、Object.prototype.foo をプロパティアクセサで参照できない

Object.prototype.foo = 1;
console.log(Object.create(null).foo); // undefined

Object.prototypeの影響範囲は大きいが、それでも全てのデータに影響を及ぼすものではない
569デフォルトの名無しさん (ワッチョイ 7fad-3tT5 [27.141.86.23])
垢版 |
2021/06/10(木) 08:41:17.28ID:U1CAdJt50
>>568
だからnullは駄目ってことですよねw
(C#ではそれができるという違い)
2021/06/10(木) 08:57:10.02ID:O1fj45xU0
>>569
null.foo()が動かない背景の説明>>567,559が何一つ正しくなくて比較対象として成立していない、という話
2021/06/12(土) 12:09:15.43ID:TONJAMor0
JavaScriptは初心者向けの簡単な言語と言われているけど、ものすごく難しくないですか?
Javaとアセンブラも出来るけど、JavaScriptの方が圧倒的に難しい。
2021/06/12(土) 13:07:42.11ID:gwGFqR/Mr
当たり前だけど初級レベルはそれほどでもない
しかし製品レベルを作るとなると一気にナンジャコレ的な書き方でジャバパーたちには理解不能になる
そこにDOM、jsxやstyle componentとかも入ってくるからもはや宇宙語になる
2021/06/12(土) 13:10:20.75ID:sFAMwcrAM
まずJavaが出来るとはどこまで出来るのか
2021/06/12(土) 13:34:25.97ID:dSUYOhsd0
JavaScriptはWEBブラウザを誰でも持っていて環境が身近だから試してみやすいというだけで、言語自体が初心者向けというわけではないだろ。

まともに使おうとしたらかなり筋の悪い言語。所詮はWEB用のDSL。
Excelは持ってるからVBAやってみるみたいなもんだよ。
2021/06/12(土) 15:13:04.15ID:TONJAMor0
>>573
ボラクルのシルバー
2021/06/12(土) 15:55:52.61ID:uZPmX/A70
>>571
JavaScriptの理解が難しくなる下地は十分にある

- 複数の仕様書
- 複数ブラウザで動作確認
- 新機能作成時の制約(一定の後方互換性を担保)

それ以前にESレベルの基本を分かってない人が多過ぎな気はするが

- 型
- [[Prototype]]
- プロトタイプチェーン
- スコープチェーン
2021/06/12(土) 17:03:36.21ID:th+ACTev0
JavaScript(正しくはECMAScript)ほど仕様しっかりしてる言語は今メインストリームの言語でそんなにはないと思うけどな。Cはしっかりしてるけど、かなりコンパクトな言語だからドキュメント量が全然違う
RubyやPythonにいたっては酷いもんだ。思い付きで作ってるレベル
2021/06/12(土) 17:20:10.36ID:7X99TIl20
仕様が複数あると言っても、Babel使ってES2020から入るのが正解だろうね。
余計なことを学ぶ必要性が減る。プロトタイプチェーンなんて最初は知らなくていい。
2021/06/12(土) 17:33:15.15ID:oYBdY7Ja0
Babelで後方互換性担保できるといっても
Setみたいに色々なことができるせいで機械的な書き換えができないコンストラクターがあるからなあ
業務端末が古いandroidのイントラ案件でSet動いてないの気付かず3時間くらい無駄にしたわ
2021/06/12(土) 17:52:32.79ID:uZPmX/A70
JavaScript関連の仕様はECMAScriptの他に、DOM,HTML,UIEvents,fetch,Selectors,CSDOM等、多くの仕様がある
Babelを使えば、ECMAScriptをES2020に一本化出来るが、他の仕様は読まなければならない
仕様書の中には日本語訳がなく、英語を読まなければならない場合もある

対して、Ruby,Pythonは公式マニュアルの日本語訳一つを読めば事足りる

資料の読みこなしの面では、JavaScriptの難度は非常に高い
不正確な二次情報に惑わされたり、MDNも時々間違ってたり、罠が多い
2021/06/12(土) 18:08:20.99ID:7X99TIl20
DOMを扱うならDOMを学ばなきゃならんというだけでJavaScriptとは関係ないが?
RubyやPythonを使ったとしてもDOMを扱うなら同じように必要だろう。

Webだけで学ぼうとすると古い情報に惑わされやすいというのはその通りだな。
ちゃんとした書籍を1冊用意して学ぶのが吉。
2021/06/12(土) 19:05:50.66ID:uZPmX/A70
>>581
Python公式文書はDOM APIの説明があるので、DOM仕様書を読まずともある程度の情報は得られる
https://docs.python.org/ja/3/library/xml.dom.html

ESにはDOM,HTML,fetch,CSSOM等のAPI情報は当然ない
MDNがこの役割に近いが、仕様程の信頼性がなく、英語版と日本語版で情報に差異があったり、仕様と比べて情報鮮度が落ちている部分がある
体系的な一カ所にまとまった一次情報と呼べるものがJavaScriptにはない
実装が複数仕様を実装する形なので当然だが、調査コストが高いのは事実

Pythonは仕様と実装が同一なので、仕様と実装の差を区別する必要がない
ドキュメントも仕様と実装の2つ分を読む必要がなく、最新の情報に整備されている
2021/06/12(土) 19:38:43.59ID:7X99TIl20
糞どうでもいいさにしか思えないがそこまでして優劣をつけたいんだろうか
2021/06/12(土) 21:01:08.50ID:uZPmX/A70
>>583
ちゃぶ台返しだな
>>571>>581にいってやれ
2021/06/12(土) 21:06:47.07ID:7X99TIl20

DOMを持ち出すのは関係ないし糞どうでもいいことなのは変わらんが?
586デフォルトの名無しさん (ワッチョイ 1369-UeOY [114.171.63.103])
垢版 |
2021/06/15(火) 08:09:22.25ID:V8tE61t00
1個の商品の金額の場合オブジェクトでvar shouhin = {};と宣言してshouhin.kingakuとすればいいんですが
複数の商品の場合shouhin[1].kingaku、shouhin[2].kingakuのようにしたいんですが
宣言や関数で引数として渡す場合はどうすればいいですか?
587デフォルトの名無しさん (ワッチョイ 7361-42hD [218.33.253.212])
垢版 |
2021/06/15(火) 08:57:01.65ID:+pZThSMJ0
配列にするだけじゃん。
588デフォルトの名無しさん (ワッチョイ ffad-W6T4 [27.141.86.23])
垢版 |
2021/06/17(木) 11:44:35.91ID:Y2s/MWh/0
内部関数をコールバックに渡せるのは超楽だね
同名のグローバル関数があってそっち行くかな?と思ったらちゃんと内部関数に行った
(そもそも普通の関数に内部関数をほいほい書ける時点で超楽だが)

コールバックがグローバルに限定された言語の場合、名前管理が増えるのが嫌で、
なんとかコールバック使わずに、とか頭をひねっちゃう
2021/06/17(木) 12:31:17.20ID:hYDgxsHQ0
classを使ってる奴いる?
今まで通りfunctionのコンストラクタで十分だよな。
2021/06/17(木) 14:39:14.89ID:jYVCbF5R0
>>589
誰のためにあるかという話だわな。
なおクラス構文導入議論時、反対派の旗手だったのはグッドパーツ著者でありJSONの発明者でもあるダグラスクロックフォード。

https://www.graat.co.jp/blogs/ckn8ourdkezx50b95h4v5uk1o
障害物 #1: .NET開発者のチーム参加
概念実証の後は、クライアントのアウトソーシングチームの開発者が合流した。 知識共有はまだ始めておらず、CTOから「やあ、Răzvan。明日は本物のアウトソーシングチームと会わないといけないね」とメールが送られてきた。

我々はミーティングを設け、テクニカルリードは私を質問と解決策で迎え撃った:

「依存性の注入はどこですか?『必要ない』とはどういうことですか?」:これはInversifyJSだよ!
「関数コンポーネント? ダメダメダメ。我たちは好きじゃないからクラスコンポーネントを使いましょう!」
「なぜこれらの関数はただぶら下がっているだけなのですか? なぜ静的にするためサービスクラス内でカプセル化しないのですか?」
「APIのリトライポリシーはどこですか? PollyJSで実装しましょう」
「なぜクラス名がパスカルケースの場合にファイル名がダッシュケースとなるのですか? クラス名を反映させるため、今後はSomePageComponent.tsxという名前にします」
そして、私をもっとも悩ませた件:「Visual Studio CodeでなくVisual Studioで実行するにはどうすればよいでしょうか?」
私は確信した。彼らはReactで .NETのガイドラインとデザインパターンを使いたがっている。私は何度もこのような出来事を見てきた — 新しい技術のやり方に適応できず苦労している開発者だ。



9か月後、我々は50ページ以上を作成していた。開発者たちは関数コンポーネントがクラスコンポーネントと同じくらい良いことに気づき、それらを使い始めた。その結果、進行中のプロジェクトは元々のコーディング規約に従わなくなっていた。


本当.NET老害ってクソだわ。
自分が分からないからって意味ない(できることが増えるわけでもない)クラスベースに固執しといて、単純な関数で同じことできると気づいたらお前らのワガママに合わせて作ってやったコーディング規約破って勝手に使い出すんだからな。
いや、言いだしっぺなんだからクラス使い続けろや!
2021/06/17(木) 16:52:43.35ID:hYDgxsHQ0
>>590
結局これも将来的には非推奨になりそうですよね。
中途半端な機能を増やされると現場はかえってしんどい。
592デフォルトの名無しさん (ワッチョイ 1ecb-wcuM [223.132.6.112])
垢版 |
2021/06/20(日) 16:40:52.66ID:WIbUxISs0
要素を取得して、appendchildしたいのですが、appendchildは移動になるんですよね。
そこでassignでコピーしたいと思います。
以下のspanをコピーした後、別のspan内に入れたいです。

<span id="test_span" style="background-color: skyblue;">てすとな</span>
<ul id="table_of_content"></ul>

let toc = document.getElementById("table_of_content");
let span = document.getElementById("test_span");
let copy = Object.assign(document.createElement("span") ,span);
toc.appendChild(copy);
しかし、これだとtable_of_contentにspanは挿入されますが、spanの中身がありません。

let copy = Object.assign(document.createElement("span") ,textContent:span.textContent);
こうへんこうしてもだめです。
let copy = Object.assign(document.createElement("span") ,{textContent:span.textContent});

これならokです。
なぜこのような結果になるのでしょうか?

マージするオブジェクトの型?みたいなものが一致していないとだめなのですか?
1つ目はタグにタグをコピーしているだけ
2つ目はタグにプロパティをコピーしている
3つ目はタグオブジェクトに、オブジェクトリテラル?をコピーしている?

この辺のことを教えて下さい
2021/06/20(日) 20:46:26.62ID:sZ7GtS6K0
Nodeオブジェクトに元から存在するプロパティは列挙可能になってないからそのままObject.assginしても何もコピーされない
textContentプロパティだけを取り出してObject.assignするくらいなら
let copy = document.createElement("span");
copy.textContent = span.textContent;
でいいじゃない

もっともノードの複製は
let copy = span.cloneNode(true);
で一発。ただしid等の一意であるべき属性も存在する場合は複製されることに注意
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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