Name_Not_Found<>sage<>2019/02/17(日) 02:12:57.04 ID:???.net<> JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです

※前スレ
+ JavaScript の質問用スレッド vol.137 +
https://mevius.5ch.net/test/read.cgi/hp/1546773073/ <>+ JavaScript の質問用スレッド vol.138 + Name_Not_Found<>sage<>2019/02/17(日) 02:13:12.65 ID:???.net<> ■テンプレ案
https://fiddle.jshell.net/6ksf2087/show/light/

■参考URL
ダウンロード、CDN
http://jquery.com/download/
ブラウザサポート
http://jquery.com/browser-support/
jQuery UI
http://jqueryui.com/
jQuery UI ダウンロ−ド
http://jqueryui.com/download/
リファレンス等
http://alphasis.info/
http://www.jquerystudy.info/
http://js.studio-kingdom.com/
【翻訳まとめ】jQuery 3.0 アップグレードガイド - Qiita
http://qiita.com/fmy/items/345a264a1cf2e2a73f62 <> Name_Not_Found<>sage<>2019/02/17(日) 02:13:28.21 ID:???.net<> ■JavaScript主要ライブラリ・フレームワーク

jQuery
http://jquery.com/
jQuery UI
http://jqueryui.com/
jQuery Mobile
http://jquerymobile.com/
Lo-Dash
https://lodash.com/
Backbone.js
http://backbonejs.org/
Underscore.js
http://underscorejs.org/
AngularJS
https://angularjs.org/
Knockoutjs
http://knockoutjs.com/
RequireJS
http://requirejs.org/
D3.js
http://d3js.org/
threejs
http://threejs.org/ <> Name_Not_Found<>sage<>2019/02/17(日) 02:13:44.56 ID:???.net<> ■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。 <> Name_Not_Found<>sage<>2019/02/17(日) 02:14:34.72 ID:???.net<> ■JavaScript主要ライブラリ・フレームワーク 利用率

https://w3techs.com/technologies/overview/javascript_library/all <> Name_Not_Found<>sage<>2019/02/17(日) 02:15:54.20 ID:???.net<> 前スレまとめ

> カンマ演算子につき、
> A, Bと書くとき、Aに期待できるのは副作用のみである。
a = 1, b = a のような書き方ができるので間違い

単に A, B で Aの部分で再代入なしの代入(束縛)ができることに気づいてないマヌケってだけ <> Name_Not_Found<>sage<>2019/02/17(日) 03:18:40.96 ID:???.net<> だよな!こうすればいいんだよな!
[1,2,3].map(v => (const w = v + 2, w * w))
あ、あれ?(TдT) <> Name_Not_Found<>sage<>2019/02/17(日) 03:20:58.84 ID:???.net<> まとめ
カンマ演算子につき、
A, Bと書くとき、Aに期待できるのは副作用のみである。
カンマ演算子が取れるのは式(Expression)のみである。
変数宣言(VariableStatement)は宣言であって式ではない。
すなわち、
const a = 1, b = 2
は変数宣言であり、
またこのカンマはカンマ演算子ではない。
[1,2,3].map(v => (v += 2, v * v));
のv += 2は仮引数vを書き換える副作用である。
カンマ演算子は式(Expression)しか取れないので、副作用なく
[1,2,3].map(v => (const w = v + 2, w * w))
などと書くことはできない。
なぜならconst w = v + 2は変数宣言(Statement)であって式(Expression)ではないからである。
カンマ演算子を使わず
[1,2,3].map(v => {
const w = v + 2;
return w * w;
})
と書いたときはどこにも副作用がない。カンマ演算子もどこにもない。 <> Name_Not_Found<>sage<>2019/02/17(日) 03:22:36.35 ID:???.net<> >>8
いい加減にしろよ?
https://mevius.5ch.net/test/read.cgi/tech/1548720347/160
で決着ついただろ! <> Name_Not_Found<>sage<>2019/02/17(日) 03:30:39.19 ID:???.net<> >>9
恥ずかしいからやめて… <> Name_Not_Found<>sage<>2019/02/17(日) 03:39:12.16 ID:???.net<> テンプレだけどさ、
jQueryはいいとしてさすがに今どきjQuery UIはなくね? <> Name_Not_Found<>sage<>2019/02/17(日) 03:40:32.49 ID:???.net<> Backbone.js、Knockoutjsも。 <> Name_Not_Found<>sage<>2019/02/17(日) 04:00:32.14 ID:???.net<> jQuery偏重テンプレがあからさますぎ <> Name_Not_Found<>sage<>2019/02/17(日) 04:12:03.83 ID:???.net<> >>6-8
面白いジョークをありがとう。朝からみんな笑ってスレに活気が生まれたよ。 <> Name_Not_Found<>sage<>2019/02/17(日) 12:46:19.32 ID:???.net<> >>11
>1と>4だけでいいかもね <> Name_Not_Found<>sage<>2019/02/17(日) 12:48:19.46 ID:???.net<> というか質問テンプレートを使った質問を
ここしばらく見たことがないなw <> Name_Not_Found<>sage<>2019/02/17(日) 13:00:12.21 ID:???.net<> >>16
回答側にも問題有
是正する人がいないから、無意味と化してる <> Name_Not_Found<>sega<>2019/02/17(日) 16:43:30.99 ID:???.net<> コールバック関数を登録する処理などで、
登録されたコールバックの引数が どんなもんかを
チェックする方法ってありますか?

たとえば、引数に int ひとつだけの関数が登録されることを前提にしてるのに
引数が文字列な関数を登録したら、登録時にエラーにしたいんだ <> Name_Not_Found<>sage<>2019/02/17(日) 16:55:24.53 ID:???.net<> typescript使うかflow使うか、変換挟まないで素のjsのままやりたいならbabelparser <> Name_Not_Found<>sage<>2019/02/17(日) 16:56:53.21 ID:???.net<> あbabelparserはこの要件に合わないな。忘れてくれ <> Name_Not_Found<>sage<>2019/02/17(日) 17:00:25.52 ID:???.net<> >>18
コールバックを呼び出すのがあなたが作成している関数ならtypeof演算子で調べられる <> Name_Not_Found<>sage<>2019/02/17(日) 17:41:48.66 ID:???.net<> >>18
function sample (i, f) {
if (typeof i !== 'number') {
throw new TypeError;
}

f(i);
} <> Name_Not_Found<>sage<>2019/02/17(日) 18:09:43.19 ID:???.net<> >>19
あーそうか、型がそもそも無いんだから無理だね。
typescript使うしかないか
ありがとう <> Name_Not_Found<>sage<>2019/02/17(日) 18:14:15.83 ID:???.net<> function sample (o, f) {
if (typeof o !== 'object') {
throw new TypeError;
}

f(o);
}

function samplecb (obj) {
obj.newprop = 'new!';
}

sample(null, samplecb);

なるほど。 <> Name_Not_Found<>sage<>2019/02/17(日) 18:36:36.73 ID:???.net<> >>24
それは全Object型を判定できてないぞ
Int型が欲しいなら、Int32準拠で作るなら自前実装すれば良い
整数判定なんてたいして難しくはあるまい <> Name_Not_Found<><>2019/02/18(月) 18:01:06.31 ID:E4CBfg7H.net<> マンガで分かるjavascriptプログラミング講座
ttps://crocro.com/write/manga_javascript/wiki.cgiというサイトを見て分かりやすいと思ったんですが、ちょっと昔のものをやっても大丈夫なんですか?

また、他に初心者にオススメの学習サイトってありませんか?
Progateは分かりやすく初級編は一周しましたが、クレジットカード持ってなく会員登録できないのでやめました。
ドットインストールはテキストエディタが白くて目が疲れて集中出来ないのでやめました。
なので、なるべく無料で初心者向けの学習サイトがあったら教えてください。お願いします... <> Name_Not_Found<>sage<>2019/02/18(月) 19:29:51.47 ID:???.net<> >>26
そのサイトは確度に問題があると思うがなあ <> Name_Not_Found<>sage<>2019/02/18(月) 19:41:40.89 ID:???.net<> >>27
まじっすか...
使うのやめます... <> Name_Not_Found<>sage<>2019/02/19(火) 09:23:58.72 ID:???.net<> >>26
とりあえずMDNでいいんじゃね。
初心者用チュートリアルとかあるし <> Name_Not_Found<>sage<>2019/02/19(火) 13:07:52.04 ID:???.net<> スレを未読に戻す機能ってありますか?
レス代行しているのですが、後でと思って放置してしまう時があります
未読に戻せれば忘れないのですが <> Name_Not_Found<>sage<>2019/02/19(火) 13:08:10.51 ID:???.net<> すいません、スレを間違えました <> Name_Not_Found<>sage<>2019/02/19(火) 13:11:03.39 ID:???.net<> ※このスレはレス代行業者に監視されています <> Name_Not_Found<><>2019/02/19(火) 19:14:39.12 ID:q40YB38R.net<> JavaScriptの勉強始めたいんだけど、練習環境ってどうすればいいの?
FireFoxのやつとか使うのが一般的?

できればpythonのjupyter notebookみたいな学習ノートとしての機能もしっかりついてるような
環境が欲しいんだけど。 <> Name_Not_Found<>sage<>2019/02/19(火) 19:24:48.69 ID:???.net<> Chrome以上の環境なんてあるんか <> Name_Not_Found<>sage<>2019/02/19(火) 19:25:31.13 ID:???.net<> htmlファイルにjs書いてchromeで開いたらソレでいいと思うけど
テキストエディタはatom辺りでええやろ <> Name_Not_Found<>sage<>2019/02/19(火) 19:27:59.99 ID:???.net<> ノート機能が欲しいならjupyter notebookにjsカーネル入れるだけだろ。
とっくにpython専用じゃないんだがあれ。 <> Name_Not_Found<>sage<>2019/02/19(火) 19:28:42.28 ID:???.net<> runkit使えrunkit <> Name_Not_Found<>sage<>2019/02/19(火) 19:29:50.84 ID:???.net<> いやvscodeにlive-serverだろ <> Name_Not_Found<>sage<>2019/02/19(火) 19:35:52.24 ID:???.net<> jsの勉強って言っても要素作成、属性変更、無名関数とバインドにifとforぐらいやれば十分で
後は設計する力を高めたほうが良いと思う <> Name_Not_Found<>sage<>2019/02/19(火) 19:46:44.53 ID:???.net<> >>29
見たところ自分に合ってそうです!
やってみます!
ありがとうございます! <> Name_Not_Found<><>2019/02/19(火) 22:28:44.70 ID:q40YB38R.net<> jupyter notebookでできるし、jupyterlabでもできるんだ...
知らなかった!サンクス

ちなみにnode.jsのnodebrewとnpmは、pythonだとpyenvとpipに相当するという理解でOK? <> Name_Not_Found<>sage<>2019/02/20(水) 06:23:39.09 ID:???.net<> VSCode, Node.js をインストールする

コマンドプロンプトで、where node と打つと、
C:\Program Files\nodejs\node.exe

後は、VSCode のスレへ行って、お勧め拡張機能を、10個ぐらい入れる

ただし時刻は、Node.js を直接実行すると、UTC となり、9時間ずれる。
timeZone を指定すれば、ローカルタイムになる

同じソースコードをブラウザや、拡張機能のQuokka.js で実行すると、ローカルタイムになる

// 1970年01月01日 00:00:00 UTC (Unix エポック)
var dt3 = new Date( 1970, 0, 1, 0, 0, 0 );

// 上は、1969-12-31T15:00:00.000Z, 下は、1/1/1970, 00:00:00
console.log ( dt3 );
console.log ( dt3.toLocaleString( 'en-US', { timeZone: 'Asia/Tokyo', hour12: false } ) ); <> Name_Not_Found<>sage<>2019/02/20(水) 06:39:25.66 ID:???.net<> >>41
node.js のnpm, yarn は、Ruby のBundler と同じ

パッケージをグローバルにインストールすると、すべてのプロジェクトで共通となる

逆に、プロジェクトフォルダに設定ファイルを置いて、
プロジェクト固有にインストールすると、そのプロジェクトのみに適用できる

Ruby では例えば、sqlite3 のgem(パッケージ)を、グローバルにインストールすると、
自分は、Ruby2.4 を使っているのに、2.0〜2.4 のすべてが入る!

最新版のバージョン指定をしなかったからかな?
npm, yarn では、どうなるのか、わからないけど

C:\Ruby24-x64 以下に、
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.0/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.1/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.2/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.3/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.4/sqlite3_native.so <> Name_Not_Found<>sage<>2019/02/20(水) 07:02:50.87 ID:???.net<> >>42>>43
死ね <> Name_Not_Found<>sage<>2019/02/20(水) 17:16:50.42 ID:???.net<> ゲーム用のフレームワークとゲームエンジンでは何が違うんですか?
また、javascriptだけで出来る範囲というのはどこまですか? <> Name_Not_Found<>sage<>2019/02/20(水) 18:29:49.56 ID:???.net<> >>45
フレームワーク= ライブラリ群
エンジン=ライブラリ
unityぐらいになると、独自のフレームワークになったりする

まぁおsれらはさておき、超絶おざっぱに言うと
>、javascriptだけで出来る範囲と
あったりなかったりする
ボタンを配置するのがjs
セーブデータを設定するのがphp <> Name_Not_Found<>sage<>2019/02/20(水) 20:15:49.10 ID:???.net<> wikipediaより
> ライブラリ(英: Library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。

ライブラリ群は、汎用性の高い複数のプログラムを、ひとまとまりにしたものを、ひとまとまりにしたものである???

まあ「フレームワーク=ライブラリ群」という説明が間違ってるから
意味不明になるんだけどねw <> Name_Not_Found<>sage<>2019/02/20(水) 20:17:42.69 ID:???.net<> フレームワーク・・・俺(フレームワーク)が呼び出すから、お前は中身を書いてくれ
ライブラリ・・・俺(ライブラリ)が中身を書いたから、お前は便利に使ってくれ <> Name_Not_Found<>sage<>2019/02/20(水) 20:18:32.86 ID:???.net<> それはIoCの説明では? <> Name_Not_Found<>sage<>2019/02/20(水) 20:24:33.95 ID:???.net<> 全く違う <> Name_Not_Found<>sage<>2019/02/20(水) 20:40:09.61 ID:???.net<> >>47
申し訳ない、飲みながら適当n書きました! <> Name_Not_Found<><>2019/02/20(水) 22:59:09.17 ID:qoPWETkF.net<> ローカルHTMLファイルをChromeで

file:///〜.html#aaa
とか
file:///〜.html?aaa
のような感じで開こうとすると
#が%23、?が%3Fに置き変わってしまい
htmlファイルそのものが見つからなかったような感じになってしまうんですが
このようにURLにhashなりsearchなりを含めた形で開くのはローカルでは無理なのでしょうか? <> Name_Not_Found<>sage<>2019/02/21(木) 00:21:00.12 ID:???.net<> >>52
へぇ、知らなかった
その辺は限界かと思うので、xamppなどを導入すると良いと思う
hostsファイルの編集と組み合わせるとメチャクチャ強力だぞ
詳細はこの辺
https://15g.jp/post-770/ <> Name_Not_Found<>sage<>2019/02/21(木) 04:34:50.79 ID:???.net<> node js とは実行環境のことですか?vs code使うときに必要なようですが <> Name_Not_Found<>sage<>2019/02/21(木) 06:54:03.52 ID:???.net<> >>52
file:///は通信を発生させないから <> Name_Not_Found<>sage<>2019/02/21(木) 08:48:49.50 ID:???.net<> vs codeなんですが nodejsとどうやって関連付けするか教えてください
add configurationの部分に候補が出てこないです
node jsはインストールしてます <> Name_Not_Found<>sage<>2019/02/21(木) 08:56:26.44 ID:???.net<> >>56
https://code.visualstudio.com/docs/nodejs/nodejs-tutorial <> Name_Not_Found<>sage<>2019/02/21(木) 09:57:14.66 ID:???.net<> 連想配列のキーに使えない文字ってありますか?
また、連想配列のキーの長さの最大値って何文字ですか?
ちょっと重複のカウントとかに連想配列を使いたいので知りたいです。
よろしくお願いします。 <> Name_Not_Found<>sage<>2019/02/21(木) 10:55:03.20 ID:???.net<> > 重複のカウントとか

どんな要件か教えろ
そんなくだらないこと考える必要のない素晴らしい実装を見せてやんよシュッシュッ <> Name_Not_Found<>sage<>2019/02/21(木) 12:48:18.44 ID:???.net<> >>58
[[Prototype]]をnullにしたなら、文字列リテラルの仕様に準ずる <> 60<>sage<>2019/02/21(木) 12:51:28.22 ID:???.net<> 値を捨てるぐらいなら、new Set()を使えばいいのに、とは思う <> Name_Not_Found<>sage<>2019/02/22(金) 06:51:51.53 ID:???.net<> 関数単位で見た場合副作用が無いとは言えないね <> Name_Not_Found<>sage<>2019/02/22(金) 07:02:11.35 ID:???.net<> オブジェクトを連想配列に使う場合に、
たまたま、__proto__ というキーに値を設定すると、ハマる

var obj = { __proto__: 1 };

var obj = { };
obj[ '__proto__' ] = "a";

だから、Haxe では内部的に、文字列の前に、@ を連結して、
@__proto__ のようにして、元からあるプロパティを上書きしないようにしている

確か、ES6 だったかな? のmap みたいなライブラリを使うとか、
Object.assign() とかかな? <> Name_Not_Found<>sage<>2019/02/22(金) 07:17:57.14 ID:???.net<> >>56-57
Node.js をインストールしたら、
コマンドプロンプトで、where node と打つと、
C:\Program Files\nodejs\node.exe
と表示されるか、確かめる

右側に表示される、.js ファイル上で、ターミナルを開くと、
そのファイルがあるフォルダ上で、ターミナルが開くので、
node a.js と打てば、実行できる

ターミナルでは、タブで入力補完、上下矢印で履歴をさかのぼれる

拡張機能のCode Runner を入れると、右クリックメニューから、
指定したソースコードの範囲を実行できる。
Ctrl+Shift+P で、Run Code でも同じ

拡張機能のQuokka.js を入れると、Ctrl+Shift+P で、Quokka.js New File でも実行できる。
変数名だけで、その内容をファイル上にも表示してくれる。
console.log( 変数名 ); と書かなくてもよい! <> Name_Not_Found<>sage<>2019/02/22(金) 07:34:11.54 ID:???.net<> >>63
>>60でnullにするよう指摘済
文字列のままならそれでよいが、Mapがより有用
値が不要ならSet <> Name_Not_Found<>sage<>2019/02/22(金) 08:45:47.99 ID:???.net<> >>64
質問に対する答えになってないね。
分かんねーなら黙ってろクズ。 <> Name_Not_Found<>sage<>2019/02/22(金) 12:05:23.48 ID:???.net<> オンラインのエディタでもいいの?
VS codeの設定がわからん <> Name_Not_Found<>sage<>2019/02/22(金) 18:44:08.29 ID:???.net<> https://playcode.io/
というオンラインエディタ使ってるんですが、どこからダウンロードできますかね
ファイルを <> Name_Not_Found<>sage<>2019/02/22(金) 23:36:56.20 ID:???.net<> たまたま__proto__というキーが来ることなんてクライアントサイドで考える必要はまったくない
そんなことを言い出したらたまたま1GBのキーが来ることなども考えないといけない
隕石が怖いとかそんなレベルな話は止めよう <> Name_Not_Found<>sage<>2019/02/23(土) 03:15:24.82 ID:???.net<> __proto__はプロトタイプ汚染攻撃に使われるらしい。
しかしこれ攻撃側も結構大変みたいだな。
目隠ししたまま迷路を解くみたいだ。 <> Name_Not_Found<>sage<>2019/02/23(土) 05:49:15.68 ID:???.net<> デバッグって、ブラウザの更新しながらやるもんですか?
なにかツールがあるんでしょうか。 <> Name_Not_Found<>sage<>2019/02/23(土) 08:58:24.54 ID:???.net<> >>69
かいひするほうほうがるなら、対策した方が良くね? <> Name_Not_Found<>sage<>2019/02/23(土) 11:09:41.05 ID:???.net<> beginpathはjavascriptではないのですか? <> Name_Not_Found<>sage<>2019/02/23(土) 11:21:40.61 ID:???.net<> >>72
さあ
俺はできることなら全てやるべきとは考えないけどね
著名なライブラリとかだとどこでどう使われるか分かんないから気にするのは分かるけど <> Name_Not_Found<>sage<>2019/02/23(土) 11:26:12.72 ID:???.net<> >>72
キリないぞ <> Name_Not_Found<>sage<>2019/02/23(土) 11:27:58.98 ID:???.net<> ユーザー操作が前提なら対策せざるを得ないというかセキュリティの問題になる
手元で使う分には注意するだけで済む事もあるんじゃない <> 63<>sage<>2019/02/23(土) 11:57:11.59 ID:???.net<> 例えば、英単語を登録して、使用回数を数える場合、
オブジェクトを連想配列に使うと、

たまたま、__proto__ という単語を登録しようとして、ハマる

var obj = { };
obj[ '__proto__' ] = 1; <> Name_Not_Found<>sage<>2019/02/23(土) 11:59:59.17 ID:???.net<> >>77
死ね。お前がハマってんのはクソ言語の改行コードだろwww
https://mevius.5ch.net/test/read.cgi/tech/1545421414/166 <> Name_Not_Found<><>2019/02/23(土) 15:04:25.52 ID:HHC5SAPM.net<> jQueryでメソッドに引数として渡したいものがちょっと複雑なとき、即時関数で

$('#aaa').text((()=>{
〜略〜
〜略〜
〜略〜
return bbb;
})());

とするのがよいのでしょうか?
なんかずいぶん括弧が多いですが…
即時関数を使わずおとなしく外で

〜略〜
〜略〜
const bbb = 〜略〜;
$('#aaa').text(bbb);

とする場合との使い分けがどうもわからず…
前者(即時関数)のほうが、まとまった一連の処理って感じでわかりやすい&変数名が重複しづらいので良さげな気もしますが <> Name_Not_Found<>sage<>2019/02/23(土) 17:34:48.52 ID:???.net<> >>79
なんで即時関数を使わないといけないだ?

$('#aaa').text(function() {
 〜略〜
 〜略〜
 〜略〜
 return bbb;
});

ってすりゃいいじゃん <> Name_Not_Found<>sage<>2019/02/23(土) 17:46:31.56 ID:???.net<> へー1.4から関数も受けつけてくれるようになってたんだ?
http://js.studio-kingdom.com/jquery/manipulation/text <> Name_Not_Found<>sage<>2019/02/23(土) 21:05:11.52 ID:???.net<> ドットインストールで独学で勉強中で超基礎的な質問なんですが

const o = {
a:1,
b:2,
};


Object.keys(o).forEach(key => {
console.log(`${key}${o.key}`);
});
このo.keyの部分がundefinedになってしまうんですが
なんで1って表示されないんでしょうか <> Name_Not_Found<>sage<>2019/02/23(土) 21:22:26.62 ID:???.net<> >>82
o.key → o[key]
変数名とプロパティ名がごっちゃになってる <> Name_Not_Found<>sage<>2019/02/23(土) 21:44:06.76 ID:???.net<> >>83
ああそうか、わかりました
o.keyだとkeyが変数でアクセスできるわけないですね
[]だと中が変数でも中身の文字列に変換されるからアクセスできるってわけですね
ありがとうございました <> Name_Not_Found<>sage<>2019/02/23(土) 21:53:11.02 ID:???.net<> 質問です
sinが-cosが-だったらπ〜2πの角度で返してくれる関数って存在しますか?
asinとacosが別々なのでどっちも-π/2〜π/2または0〜πで返ってしまうので <> Name_Not_Found<>sage<>2019/02/23(土) 22:16:01.99 ID:???.net<> >>85
Mathクラス
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math

Math.cos(Math.PI)
は-1が返る <> Name_Not_Found<>sage<>2019/02/23(土) 23:09:20.62 ID:???.net<> >>77
ようは、オブジェクト初期化子を使うのが問題なだけだな <> Name_Not_Found<>sage<>2019/02/24(日) 04:48:44.92 ID:???.net<> javascriptのゲームエンジンは何がおすすめですか?
更新されていないものが多いのですか・ <> Name_Not_Found<>sage<>2019/02/24(日) 09:38:59.56 ID:???.net<> >>88
好み <> Name_Not_Found<>sage<>2019/02/24(日) 09:50:29.43 ID:???.net<> ふつうにPhaserでいいだろ。 <> Name_Not_Found<>sage<>2019/02/24(日) 10:00:38.98 ID:???.net<> enchant jsってのは古いのですか? <> Name_Not_Found<>sage<>2019/02/24(日) 10:04:26.94 ID:???.net<> 無条件に「お勧め」を選ぶんだから好みだろ
古いとか気にせず、好きに選べばよい <> Name_Not_Found<>sage<>2019/02/24(日) 10:43:52.63 ID:???.net<> Unity <> Name_Not_Found<>sage<>2019/02/24(日) 10:49:43.35 ID:???.net<> >>91
https://github.com/wise9/enchant.js <> Name_Not_Found<>sage<>2019/02/24(日) 11:23:35.25 ID:???.net<> PIXI.jsはいいぞ <> Name_Not_Found<>sage<>2019/02/24(日) 11:54:55.71 ID:???.net<> フレームワーク使うならゲームエンジンで良いのでは と思うのですが <> Name_Not_Found<>sage<>2019/02/24(日) 12:52:13.90 ID:???.net<> >>96
自己判断できるなら他人に尋ねる必要はないと思うのですが <> Name_Not_Found<>sage<>2019/02/24(日) 12:54:32.46 ID:???.net<> 昔jsでゲーム作ったらチートやりたい放題になって泣いた
サーバーでデータ持たせればいいんだけど、それはそれで面倒すぎる <> Name_Not_Found<>sage<>2019/02/24(日) 13:20:17.32 ID:???.net<> >>98
1人遊び用にすればいい <> Name_Not_Found<>sage<>2019/02/24(日) 13:36:40.96 ID:???.net<> >>99
それならDXライブラリで作るんだ・・・
webの特色、サーバーサイドの処理はやっぱり活かしたかった
まぁもう作ることもないだろうけどね <> 79<><>2019/02/24(日) 20:02:21.10 ID:Zws/aviX.net<> >>80
あー関数を渡せば勝手に実行してくれるんですね、そういえばやったことあったような

でもjQueryでなく例えば配列へのpushとかだとエラーになるので、そういったときはやっぱり

array.push((()=>{
〜略〜
〜略〜
〜略〜
return bbb;
})());
のような形になるんですかね…? <> Name_Not_Found<>sage<>2019/02/24(日) 20:17:17.98 ID:???.net<> 関数の戻り値で配列のpushにする場面が良く分からん <> Name_Not_Found<>sage<>2019/02/24(日) 21:49:09.66 ID:???.net<> こんなことしたい意図が超わからん過ぎてどうにもアドバイスしようがない。 <> Name_Not_Found<>sage<>2019/02/24(日) 22:02:57.43 ID:???.net<> ゲームのイベントなら <> Name_Not_Found<>sage<>2019/02/25(月) 06:42:26.73 ID:???.net<> JavaScript版Cocos2d-x かんたんゲーム開発、2015
原題:Learning Cocos2d-JS Game Development

この本の著者、Emanuele Feronato
italian geek and PROgrammer
http://www.emanueleferonato.com/

このイタリア人、最近は、Phaser ばっかり!

他には、Haxe とか <> Name_Not_Found<>sage<>2019/02/25(月) 07:48:47.91 ID:???.net<> vs codeでどうやってjavascriptのでバッグをするんでしょうか?
チュート通りにやるのですが、うまくいきません
https://i.imgur.com/wfkEtt0.jpg <> Name_Not_Found<>sage<>2019/02/25(月) 08:05:44.50 ID:???.net<> 最近の質問、投げっぱなしばかりだけど、全員同じ人なのかな? <> Name_Not_Found<>sage<>2019/02/25(月) 11:14:35.32 ID:???.net<> >>107
解決しました <> Name_Not_Found<>sage<>2019/02/25(月) 11:14:52.43 ID:???.net<> ゲームエンジンを使わないでゲーム作るメリットはなんですか? <> Name_Not_Found<>sage<>2019/02/25(月) 11:54:30.46 ID:???.net<> 仕組みの勉強とかじゃね
あと新しい言語学ぶときとかの題材にいい。俺の場合直接数学とか題材にしちゃうと眠くなるので… <> Name_Not_Found<>sage<>2019/02/25(月) 12:11:37.27 ID:???.net<> >>108
何が解決? <> Name_Not_Found<>sage<>2019/02/25(月) 12:14:42.42 ID:???.net<> 食料問題 <> Name_Not_Found<>sage<>2019/02/25(月) 12:25:28.92 ID:???.net<> >>112
良かったね
もう報告しなくていいよ <> 114<><>2019/02/25(月) 18:32:03.85 ID:F6+XpenMr<>【環境】OS/Windows10 Android iOS ブラウザ/ChromeとSafari最新版
【条件】

出勤可能時間を提出する画面を作成している。
終日可、時間指定出勤可、出勤不可、未提出でボタンが切り替わる方式。

【何をしたのか】
各種ボタンが切り替わる機構と時間指定のときのみ
時間を入力できるフォームが生成される条件式を開発

【エラーメッセージ】なし

【期待する結果】デフォルトが終日可、かつ、7日以内の場合、ボタンを切り替えられなくしたい。(終日可のまま変更できないこと)
【サンプルコード】

https://ideone.com/63JYMf


7日以内の操作制御自体はできているのですが
制御を上手くコントロールできません。

是非とも宜しくお願い致します。<> 114<>sage<>2019/02/26(火) 00:21:29.84 ID:???.net<> 質問したいことがあります。
とても困っています。

どなたか起きてらっしゃる方おられますか? <> Name_Not_Found<>sage<>2019/02/26(火) 00:51:16.93 ID:???.net<> はい <> Name_Not_Found<>sage<>2019/02/26(火) 01:06:17.21 ID:???.net<> おるで <> Name_Not_Found<>sage<>2019/02/26(火) 01:07:06.16 ID:???.net<> 寝ました <> 114<>sage<>2019/02/26(火) 01:15:38.08 ID:???.net<> ありがとうございます!ちょっと質問テンプレ埋めるのでお待ちください <> 114<>sage<>2019/02/26(火) 01:18:37.30 ID:???.net<> 【環境】OS/Windows10 Android iOS ブラウザ/ChromeとSafari最新版
【条件】

出勤可能時間を提出する画面を作成している。
終日可、時間指定出勤可、出勤不可、未提出でボタンが切り替わる方式。

【何をしたのか】
各種ボタンが切り替わる機構と時間指定のときのみ
時間を入力できるフォームが生成される条件式を開発

【エラーメッセージ】なし

【期待する結果】デフォルトが終日可、かつ、7日以内の場合、ボタンを切り替えられなくしたい。(終日可のまま変更できないこと)
【サンプルコード】

https://ideone.com/63JYMf


7日以内の操作制御自体はできているのですが
制御を上手くコントロールできません。

是非とも宜しくお願い致します。 <> Name_Not_Found<>sage<>2019/02/26(火) 05:33:04.82 ID:???.net<> おすすめオンラインエディタ教えてください <> Name_Not_Found<>sage<>2019/02/26(火) 07:00:35.59 ID:???.net<> >>120
そういう依頼は他所で有料でやると良いよ <> 114<>sage<>2019/02/26(火) 07:11:33.13 ID:???.net<> >>122
わかりました!ありがとうございます。
オススメのサービスなどございますか? <> Name_Not_Found<>sage<>2019/02/26(火) 07:23:54.49 ID:???.net<> >>121
ぐぐれ <> Name_Not_Found<>sage<>2019/02/26(火) 10:08:49.89 ID:???.net<> >デフォルトが終日可、かつ、7日以内の場合、ボタンを切り替えられなくしたい

このスレでは、その部分のやり方だけを聞いてくれ。
条件など、if 文で書けばよいだけ

ポイントに関係ない部分のソースコードが多いほど、回答者の理解コストが高くなる。
特殊な事が多いから、業務の仕様を理解するのが、最も困る。
だから質問を、業務の仕様から切り離して、例題を作って質問してくれ

ボタンを切り替えられないようにするには、disabled 属性とかだろ?
「html button 押せない」で検索! <> Name_Not_Found<>sage<>2019/02/26(火) 10:49:32.77 ID:???.net<> 画像のキャラクターを生のjavascirptだけで移動させることはできますか?
フレームワーク使わずにです <> Name_Not_Found<>sage<>2019/02/26(火) 10:51:13.78 ID:???.net<> >>126
「画像のキャラクター」
が何を指すか分からない
例を出して <> Name_Not_Found<>sage<>2019/02/26(火) 11:23:32.44 ID:???.net<> 2dのスプライトですね
パラパラ漫画のように、スプライトを切り替えながらアニメーションさせていく感じです
勉強のためにフレームワークなしでやってるんですが <> Name_Not_Found<>sage<>2019/02/26(火) 11:51:50.82 ID:???.net<> >>126
個人的な意見だけど、そここそ逆にライブラリに頼るべき場所と思うが・・・
・ダントツで手っ取り早いのはアニメーションgifを置くだけ
・軽いのはcssスプライトで画像を切替える方法。移動はtopとleftを増減させる
https://qiita.com/takumifukasawa/items/7463d9fa48aced1cf3cb
・画像の差し替えが楽なのはimgを複数用意し、予め全て読み込ませておいて、display:noneなどで切り替えつつtop・leftで移動
か?

アニメーションはあっという間に重くなる
動いてハイ終わり、なら何とでも鳴るけど、すぐにパフォーマンスを考える必要が出てくる
できるだけcss使う方法を考えてみて <> 114<>sage<>2019/02/26(火) 14:36:42.67 ID:zHAmeXVq1<>>>124 >>125
ありがとうございます。
お陰様で解決できました!<> Name_Not_Found<>sage<>2019/02/26(火) 17:40:56.14 ID:???.net<> ↑cssかフレームワークかなんですね、、、
フレームワークってどれがいいんですか?
古いの多くて <> Name_Not_Found<>sage<>2019/02/26(火) 21:57:53.04 ID:???.net<> SVGアニメにすればJSからコントロールできる <> Name_Not_Found<>sage<>2019/02/27(水) 03:22:56.18 ID:???.net<> >>131
jquery不要の奴が良いと思うけど、
やりたいことが変なので色々と探す事になると思う
https://grow-group.jp/archives/1214/

>>132
その手があったか
ただ俺には良く分からん <> Name_Not_Found<><>2019/02/27(水) 05:28:07.90 ID:C+9QUj8L.net<> javascript初心者です
開発環境は秀丸エディタとchromeで十分でしょうか? <> Name_Not_Found<>sage<>2019/02/27(水) 07:09:06.15 ID:???.net<> 秀丸じゃ無理 <> Name_Not_Found<>sage<>2019/02/27(水) 09:11:16.25 ID:???.net<> >>134
VSCodeやSublimeTextのがよい。 <> 132<><>2019/02/27(水) 09:22:43.38 ID:C+9QUj8L.net<> >>135,136
ありがとうございます
VSCodeをインストールしようと思います <> 42<>sage<>2019/02/27(水) 09:39:37.79 ID:???.net<> VSCode, Node.js をインストールする

>>42-43
に書いてある <> Name_Not_Found<>sage<>2019/02/27(水) 09:51:05.31 ID:???.net<> >>138
死ね <> Name_Not_Found<>sage<>2019/02/27(水) 12:23:13.23 ID:???.net<> arcのエンドアングル引数がよくわからないのですが、どういう仕組みかわかりやすい図はないでしょうか? <> Name_Not_Found<>sage<>2019/02/28(木) 06:53:05.98 ID:???.net<> 描画してみれば一発で分かるでしょ
エンド アングル なんだから <> Name_Not_Found<>sage<>2019/02/28(木) 12:24:10.30 ID:???.net<> phaserってxampp必須なんですか?
ブラウザでも動作確認できませんか? <> Name_Not_Found<>sage<>2019/02/28(木) 12:43:22.44 ID:???.net<> >>142
https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl=ja <> Name_Not_Found<>sage<>2019/02/28(木) 17:13:39.46 ID:???.net<> ↑いえ、サーバにうpする意味ってなんなのかなと思って
RPGなどだとPHPなどを使うことになるからでしょうか? <> Name_Not_Found<>sage<>2019/02/28(木) 17:41:45.45 ID:???.net<> 多分同一生成元ポリシーに引っかかるんじゃない
ローカルだとそれでCanvasに画像を読み込めないとかあるから <> Name_Not_Found<>sage<>2019/02/28(木) 17:46:50.64 ID:???.net<> 初めて知った概念でした
よくわからないけど、サーバを分けるってことですよね
ローカルもサーバだし <> Name_Not_Found<>sage<>2019/02/28(木) 18:46:52.13 ID:???.net<> xamppは全面的には信頼できないって事だけ覚えておけばたいていの場合は大丈夫 <> Name_Not_Found<>sage<>2019/03/01(金) 05:59:50.12 ID:???.net<> はい <> Name_Not_Found<>sage<>2019/03/01(金) 06:00:26.79 ID:???.net<> javascriptのゲームのフレームワークで資料の多いものはなんですか?
phaserは英語はありますが、日本語はほとんどないです
環境設定もまともにできない <> Name_Not_Found<>sage<>2019/03/01(金) 06:18:38.59 ID:???.net<> >>149
>>88でお勧めを聞いておいて、条件後出しで追加質問多過ぎ
初めから全ての要件を書いて質問しなさい <> Name_Not_Found<>sage<>2019/03/01(金) 06:27:27.69 ID:???.net<> >>145
生成元が違ってもCanvasには描画できる
Canvasがdirtyになるだけ <> Name_Not_Found<>sage<>2019/03/01(金) 07:01:29.37 ID:???.net<> xamppってhtdocs配下ならどこにおいてもいいんですか?
それでアップロードされた状態になっているんでしょうか? <> Name_Not_Found<>sage<>2019/03/01(金) 07:14:53.47 ID:???.net<> chromeなら--allow-file-access -from-filesするだけじゃねぇの <> Name_Not_Found<>sage<>2019/03/01(金) 07:29:08.47 ID:???.net<> xamppよりシンプルなものあります? <> Name_Not_Found<>sage<>2019/03/01(金) 07:29:58.82 ID:???.net<> apache <> Name_Not_Found<>sage<>2019/03/01(金) 08:06:58.41 ID:???.net<> >>149
RPGツクールMV
JavaScriptのゲームエンジンで比較的新しくてネット上に日本語資料とっても多い
エディタをインストールすれば環境設定いらない <> Name_Not_Found<>sage<>2019/03/01(金) 09:05:32.87 ID:???.net<> RPGに限定する必要はないんじゃない?
何も書いてないということは、何でもいいってことだ <> Name_Not_Found<>sage<>2019/03/01(金) 09:05:45.32 ID:???.net<> 関係ないけどそれの一般ゲーム機向けのRPGツクールMV Trinityはバグ・不具合祭りで大炎上の後まだ延焼中だなワロタw
【Switch/PS4/XboxOne】RPGツクールMV Trinity★part19
https://rosie.5ch.net/test/read.cgi/gamerpg/1550321689/
●バグ・不具合
あらゆる場面での読み込みがフリーズと見紛うほど長い
(マップの大きさ・データベースの項目数などによって5〜10秒以上)
他、不具合の種類が多いので修正されるまで別項参照 <> Name_Not_Found<>sage<>2019/03/01(金) 10:11:30.63 ID:???.net<> >>154
MAMP <> Name_Not_Found<>sage<>2019/03/01(金) 12:38:46.82 ID:???.net<> xamppの使い方やっと理解しました
phaserがんばります
英語しかないけど <> Name_Not_Found<>sage<>2019/03/01(金) 16:42:23.82 ID:???.net<> >>142-146
実行環境がブラウザだけだと、
CORS(オリジン間リソース共有、Cross-Origin Resource Sharing)で、エラーになる事が多い

そういう場合に、自分のPC にサーバーを立てて、サーバー経由にして回避する。
開発中は、Ruby のSinatra(Webrick)などの遅いサーバーでも良い。
JavaScript のNode.js でも良いけど、Rubyほど簡単じゃないから

Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる

http://localhost:8080 <> Name_Not_Found<>sage<>2019/03/01(金) 16:58:40.11 ID:???.net<> >>161
クソ言語の紹介やめろ <> Name_Not_Found<>sage<>2019/03/01(金) 18:05:05.36 ID:???.net<> nodeだと
npx serve . <> Name_Not_Found<>sage<>2019/03/01(金) 18:06:36.76 ID:???.net<> >>163
ワロタww
こっちのほうが簡単じゃねーかwww <> Name_Not_Found<>sage<>2019/03/01(金) 18:10:05.23 ID:???.net<> npxはワンタイム実行だから常用するなら
npm i -g serve
でインストールしといた方がいいな
これでどこでも
serve .
でカレントディレクトリがhttp://localhost:8080でアクセスできる <> 159<>sage<>2019/03/01(金) 18:33:54.37 ID:???.net<> コマンドプロンプトで、where npx

C:\Program Files\nodejs\npx
C:\Program Files\nodejs\npx.cmd

node.js のインストールで、そういうコマンドも入っていたのか <> Name_Not_Found<>sage<>2019/03/01(金) 19:03:09.98 ID:???.net<> ruby使いがなにか書く度に良い情報が上がるようになってて草 <> 159<>sage<>2019/03/01(金) 20:28:34.10 ID:???.net<> そりゃ漏れは、10言語以上やってるから。
埋め込みSQL, PLC, HDL、電気電子回路とか、ゲームから産業機械まで、何でも作るから

この間、新幹線のチケット予約で、バグったとか、
漏れも大昔、それをプログラミングしてたし、

漏れが見れば、原因がわかるんだがなw <> Name_Not_Found<>sage<>2019/03/01(金) 20:48:59.64 ID:???.net<> >>168
で、>>163に完全敗北してると
何の意味もない人生だな <> Name_Not_Found<>sage<>2019/03/01(金) 20:50:20.46 ID:???.net<> >>168
ほーんw
で、改行コードは原因分かったのか?www
お前がruby『初心者』スレで『質問』してたwwwww
https://mevius.5ch.net/test/read.cgi/tech/1545421414/166 <> Name_Not_Found<>sage<>2019/03/01(金) 20:57:06.52 ID:???.net<> rubyキチガイにエサを与えないで下さい
住人は迷惑してます <> Name_Not_Found<>sage<>2019/03/01(金) 22:40:00.68 ID:???.net<> jQueryでCSSのメディアクエリを書き換える方法はありますか?

例えばCSSで

@media only screen and (max-width: 768px)

となっている箇所のmax-widthの値をjQueryで書き換える方法はありますか? <> Name_Not_Found<>sage<>2019/03/01(金) 23:02:41.96 ID:???.net<> >>172
https://uhyohyo.net/javascript/5_2.html <> Name_Not_Found<>sage<>2019/03/02(土) 07:00:01.64 ID:???.net<> >>141
startangle0でendangleは360で円だと思うんですが、endangle350にしたら少し欠けた円になるかと思っていました
しかし結果が違いします
コレラはどういう意味なんでしょうか <> Name_Not_Found<>sage<>2019/03/02(土) 07:18:30.28 ID:???.net<> 単位はラジアン <> Name_Not_Found<>sage<>2019/03/02(土) 10:48:05.55 ID:???.net<> ラジアンですね 調べます <> Name_Not_Found<>sage<>2019/03/02(土) 11:36:51.40 ID:???.net<> https://phaser.io/docs/2.6.2/index
javascriptってclassがないのではないのですか?
フレームワークまでjavascriptというわけではないのですかね <> Name_Not_Found<>sage<>2019/03/02(土) 12:03:15.29 ID:???.net<> 僕ホイミン悪いスライムじゃないよ <> Name_Not_Found<>sage<>2019/03/02(土) 12:04:14.24 ID:???.net<> >>177
JavaScriptには他の言語の機能はなんでもあると
言えるぐらい言語仕様は進化している。 <> Name_Not_Found<>sage<>2019/03/02(土) 12:39:15.78 ID:???.net<> ほんとにそうならTypeScriptは存在しない <> Name_Not_Found<>sage<>2019/03/02(土) 13:21:12.68 ID:???.net<> >>179
ないというのは昔の話ですか
どうも <> Name_Not_Found<>sage<>2019/03/02(土) 13:22:10.26 ID:???.net<> javascriptでゲーム作るメリットってなんですか?
steamにうpできるんですか? <> Name_Not_Found<>sage<>2019/03/02(土) 14:03:48.59 ID:???.net<> >>182
ブラウザ上で動かせる=端末による差が少ない
その代り重いし誰もプレイしないしデメリットの方が大きい
steamは知らん
C#とunityでええやろ <> Name_Not_Found<>sage<>2019/03/02(土) 15:39:28.83 ID:???.net<> >>182
・マルチプラットフォームへの展開
・支配的なストア(高額なロイヤリティ、コンテンツ制限)からの脱却
・プレイ前(ダウンロード、インストール)の心理的障壁の緩和
ガワネイティブにすりゃsteamもあるだろうけどあんまメリット感ないな <> Name_Not_Found<>sage<>2019/03/02(土) 16:22:39.59 ID:???.net<> >>183
誰もプレイしないとはなんのことですか? <> Name_Not_Found<>sage<>2019/03/02(土) 16:27:14.13 ID:???.net<> jsで作ったブラゲはチート対策が大変 <> Name_Not_Found<>sage<>2019/03/02(土) 16:53:37.41 ID:???.net<> バックエンドがjsじゃいけないんですか? <> Name_Not_Found<>sage<>2019/03/02(土) 16:57:14.55 ID:???.net<> そういうのはjsとは言わずnodeと言う <> Name_Not_Found<>sage<>2019/03/02(土) 17:10:54.80 ID:???.net<> バックエンドなら別にいいよ
ただ、あんまりゲームには向いてなかった気がする
理由は忘れた <> Name_Not_Found<>sage<>2019/03/02(土) 19:14:33.14 ID:???.net<> phaserのインテリセンスって使えないんでしょうか
海外のフォーラムで質問してきたんですが、できない <> Name_Not_Found<>sage<>2019/03/02(土) 20:23:32.29 ID:???.net<> 音楽とか、各プラットフォーム毎に、変換するのは大変だろ

その点、ブラウザゲームではブラウザが実行環境だから、楽 <> Name_Not_Found<>sage<>2019/03/02(土) 20:43:48.66 ID:???.net<> >>191
音楽を変換って何?
もう今はmp4なら大体okだよ <> Name_Not_Found<><>2019/03/02(土) 21:34:12.90 ID:DnKk4kgP.net<> <option>の個数が都度変動するため、<select>タグの中身が定まっていない場合
例えば<select>タグの中の3番目にある<option>を選択したいときって
どうすればいいですか?
<select>のvalueでvalueの値を直接指定する方法しかわからなくて <> Name_Not_Found<>sage<>2019/03/02(土) 22:02:08.46 ID:???.net<> >>193
<select id='s'>
<option>First</option>
<option>Second</option>
<option>Third</option>
</select>

const select = document.getElementById('s'); console.log(select.options[2].value) <> Name_Not_Found<>sage<>2019/03/02(土) 22:03:34.18 ID:???.net<> >>193
querySelectorでもjQueryでも'select > option:nth-of-type(3)'で取れなかったっけ <> Name_Not_Found<>sage<>2019/03/03(日) 00:33:39.31 ID:???.net<> jsがブラウザでキャッシュされずにページ開くと毎回ロードされるんだけどなんでだろ?

・WebPackでビルドしたjsファイルのみキャッシュされない。他のビルドしないファイルはキャッシュされる
・scriptタグでjsファイル指定してるが、ファイル名はbundle.js?v=1.0.0みたいにパラメータも固定のままにしてる
・ChromeDeveloperToolの設定でキャッシュ無効化にはしていない(もし有効なら全ファイルがキャッシュされないはず)

あと考えられることはなんだろう? <> 191<>sage<>2019/03/03(日) 01:24:45.99 ID:???.net<> ありがとうございます

>>194
あーそういう配列に格納されてるんですね!
思ったより簡単だった…

>>195
そういえば記憶の中にうっすらあったような気がしますがoptionでも可能…?
やってみようと思います <> Name_Not_Found<>sage<>2019/03/03(日) 04:13:18.30 ID:???.net<> vs codeがメモリバカ食いなのですが、いいエディタ教えてください <> Name_Not_Found<>sage<>2019/03/03(日) 04:50:58.55 ID:???.net<> メモリを増設するかPCを買い換えましょう
いや、割とガチで <> Name_Not_Found<>sage<>2019/03/03(日) 05:42:04.82 ID:???.net<> javasriptでゲームを作るのは良くないのですか?
何使ったらいいですか
ちょっとしたパズルです

フレームワークも日本語がないし

>>.197
8gbです <> Name_Not_Found<>sage<>2019/03/03(日) 08:10:58.21 ID:???.net<> >>200
君前からずっと質問してるよね
パズル要素は今初めて出たけど、どうせ他の条件も後出しして質問し直すんでしょ?
Phaser英語だけだけど、頑張るんじゃなかったの? <> Name_Not_Found<>sage<>2019/03/03(日) 11:22:48.27 ID:???.net<> 英語だけだとやっぱり辛いなって <> Name_Not_Found<>sage<>2019/03/03(日) 11:41:30.06 ID:???.net<> ならもう答え出てるじゃん
このスレでくだ巻く前にゲ製板でおすすめツール教えてもらった方が遥かに有意義 <> Name_Not_Found<>sage<>2019/03/03(日) 11:42:07.54 ID:???.net<> まぁ分かる
日本語じゃないと面白くないんだよな
変な孤独感・疎外感みたいなものを感じる

とりあえずパーって作ってみたら?
個人的にはc#とunityの方が100倍楽と思うけど、
パズルゲームの場合重要なのはアルゴリズムだから言語なんて何でも良いだろう <> Name_Not_Found<>sage<>2019/03/03(日) 11:42:46.32 ID:???.net<> そういやそんな板もあったな <> Name_Not_Found<>sage<>2019/03/03(日) 13:00:43.08 ID:???.net<> >>196
すまんけどこれわかる人おる? <> Name_Not_Found<>sage<>2019/03/03(日) 14:36:49.63 ID:???.net<> >>206
キャッシュされてるかどうかってどう判断してるの <> Name_Not_Found<>sage<>2019/03/03(日) 14:52:43.08 ID:???.net<> >>206
いるよ <> Name_Not_Found<>sage<>2019/03/03(日) 18:02:42.21 ID:???.net<> >>207
ChromeDeveloperToolで確認しとるよ

>>208
教えてくんなまし!

https://imgur.com/N8o1WQu.jpg <> Name_Not_Found<>sage<>2019/03/03(日) 18:22:57.26 ID:???.net<> レスポンスヘッダはどうなってるの?
正直このスレで聞く案件なのか疑わしいんだけど <> Name_Not_Found<>sage<>2019/03/03(日) 18:24:27.38 ID:???.net<> パラメータを一回外して試してみて <> Name_Not_Found<>sage<>2019/03/03(日) 18:36:09.44 ID:???.net<> >>210
たしかに…
だけどとりあえずレスポンスヘッダはこれ

https://i.imgur.com/aQJO6WX.jpg <> Name_Not_Found<>sage<>2019/03/03(日) 18:37:26.38 ID:???.net<> >>211
パラメータ外してリロード後に数回リロードしたけどキャッシュされないっす! <> Name_Not_Found<>sage<>2019/03/03(日) 18:50:12.54 ID:???.net<> 仮想domやモジュールバンドラー出てきて
htmlってもはや1つのjavascriptを読み込むだけのものになってきてるよね <> Name_Not_Found<>sage<>2019/03/03(日) 19:02:35.55 ID:???.net<> この数年寝てたの? <> Name_Not_Found<>sage<>2019/03/03(日) 19:04:05.88 ID:???.net<> キャッシュされない js
で検索したら
キャッシュさせない js
の結果しか出て来ない <> Name_Not_Found<>sage<>2019/03/03(日) 19:25:18.75 ID:???.net<> >>212
キャッシュを利用すると判断出来る情報がない
多分サーバー側の設定の問題だと思う <> Name_Not_Found<>sage<>2019/03/03(日) 19:38:47.37 ID:???.net<> >>217
なるほど
サーバー側調べてみるかあ <> Name_Not_Found<>sage<>2019/03/03(日) 19:39:03.30 ID:???.net<> >>216
そうなんだよw <> Name_Not_Found<>sage<>2019/03/03(日) 19:45:31.02 ID:???.net<> >>215
あ? <> Name_Not_Found<><>2019/03/03(日) 22:43:25.81 ID:xAf9z6Ft.net<> お金ないです
参考書なしの独学で勉強なさってる方いますか?
参考にしてるサイトがあれば教えてください
今はイヌでもわかるJavaScript講座を眺めたり写経しています <> Name_Not_Found<>sage<>2019/03/03(日) 22:58:17.35 ID:???.net<> jsなんてとりあえずはclass付け外しするぐらいで十分
サイト作ったほうが良い <> Name_Not_Found<>sage<>2019/03/03(日) 23:13:56.47 ID:???.net<> >>200-205
JavaScript なら、Cocos Creator(Cocos2d-x), Phaser, Haxe。
Python 風なら、Godot

それよりも本格的なものは、Unity, UE4

まあ、ゲーム製作板で聞いて <> Name_Not_Found<>sage<>2019/03/04(月) 07:42:51.42 ID:???.net<> >>223
ありがとうございます
RPG作りたいんですが、ウディタはこちらの環境だと文字サイズが小さすぎて辛いです
フレームワークとゲームエンジンならどちらがRPG向きなんでしょうか

ウディタは古い開発ツールで作成されている感じでしょうか <> Name_Not_Found<>sage<>2019/03/04(月) 07:55:40.72 ID:???.net<> やはり、条件後出しで質問してきたな
いつまでも、学習しない人だな <> Name_Not_Found<>sage<>2019/03/04(月) 09:18:25.46 ID:???.net<> ウディタなんて誰も答えてないんだが。
独り言ならチラシの裏にお願いしたいね。 <> Name_Not_Found<>sage<>2019/03/04(月) 09:23:39.79 ID:???.net<> >>224
ゲーム制作板に行ってくれ <> Name_Not_Found<><>2019/03/04(月) 13:54:36.36 ID:f7xdnLxG.net<> javascriptのpromiseを勉強中なのですが、プロミスチェーンが良く分かりません。
最初に作ったpromiseオブジェクトのthen()で別のpromiseオブジェクトを作ってreturnした場合、最初のpromiseはどうなるんでしょうか?

function doSomething1() { return new Promise(function(resolve,reject){ // resolve or reject }); }
function doSomething2() { return new Promise(function(resolve,reject){ // do something 2 }); }
var prom1 = doSomething1().then(function(result){
  // 最初のpromise
  return doSomething2(); // 別のプロミスを返却
}).then(function(result) {
// 2番目のpromise?
// return prom1; <= 合法 or 非合法? promiseのthenの中で別のプロミスを返却した場合、プロミスチェーンどうなる?
}).then(function(result) {
// どっちのpromise ?
}) <> Name_Not_Found<>sage<>2019/03/04(月) 23:17:16.88 ID:???.net<> >>228
別のプロミスを返却するのは当然で何もおかしいこと無いんだけど
「prom1 = 〜」の中でprom1を返すのはおかしくね?
自分が完了するのを待機するから永遠に終わらない <> Name_Not_Found<>sage<>2019/03/05(火) 05:32:16.14 ID:???.net<> jsdocというのはコメントアウトとは異なるのですか?
他のファイルをインポートしたり出来るようですが <> Name_Not_Found<>sage<>2019/03/05(火) 06:59:51.36 ID:???.net<> >>229
大常識としてプロミスチェーンのループは認められてないでしょ
プロトタイプチェーンと同じく例外が発生する <> Name_Not_Found<>sage<>2019/03/05(火) 11:07:37.92 ID:???.net<> >>228
誰か回答するだろうと思って放置していたが誰も回答しないな。

仕方ないので最初に、jQueryは素晴らしいDOM操作ライブラリだぞ。と一言言わせてもらおうw

まずな、thenの引数の関数の中にはPromiseなんていないんだよ。

var prom1 = doSomething1().then(function(result){
  // 最初のpromise ← 間違い。ここにPromiseなんていない
  return doSomething2();
}).then(function(result) {


>>228には、「.then」という単語が3回でてくるが、このメソッドが属する
Promiseオブジェクトはすべて別物だ。別のオブジェクトでなければいけない
(変な書き方をすりゃ話は別だが)

また、.thenの引数の関数は、新しいPromiseオブジェクトを返すものなんだが、
Promiseオブジェクト以外も返すことができる。

var prom1 = doSomething1().then(function(result){
  return 123;
}).then(function(result) {

この場合でも、123という数値は、内部でごにゃごにゃされて
すぐにresolve(123)されるPromiseオブジェクトに変換される。 <> 230<>sage<>2019/03/05(火) 11:18:17.82 ID:???.net<> > また、.thenの引数の関数は、新しいPromiseオブジェクトを返すものなんだが、

と書いたが、つまりはプロミスチェーンで複数出てくる .then、
この.thenが属するPromiseオブジェクトはそれぞれ別ものなんだよ。

なんでかというと、.thenが実行されるのはPromiseがresolveになった時。
一旦resolveになるとその状態が保たれて変更できないわけだから、
以下のようなことをすると単純に次々実行されてしまうだけ。

var prom = Promise.resolve(); # resolveされたPromiseを返す

prom.then(function(result){
 return prom;
}).then(function(result) {
 return prom;
}).then(function(result) {
 return prom;
})

プロミスを複数つなげる = 非同期処理を複数つなげる。
ならばresolveでもrejectでもない状態にしなければいけないので
それぞれ異なったPromiseにならざるを得ない <> Name_Not_Found<>sage<>2019/03/05(火) 15:58:20.71 ID:???.net<> japascriptでプログラム作ると逮捕されるってマジ? <> Name_Not_Found<><>2019/03/05(火) 17:41:03.24 ID:7A8gvhHV.net<> >>232-233
詳しい解説ありがとうございます。
thenの中で新しいpromise作って返却したら、それまでのthenで繋がってる元々のプロミスチェーンが宙ぶらりんになって途切れてしまうものだと思ってました。
プロミスとプロミスチェーンの概念がイマイチ理解出来ないでいます・・・ <> Name_Not_Found<>sage<>2019/03/05(火) 17:58:19.46 ID:???.net<> >>234
中学生が作ったブラクラの奴ね
見せしめでしょ、うざいプログラム作るなと <> Name_Not_Found<><>2019/03/05(火) 18:33:50.64 ID:gep4EaMM.net<> ゲーム等のソフトを起動中、ボタンを押すとソフト上のテキストを取得してブラウザに表示する方法ってあるでしょうか? <> Name_Not_Found<>sage<>2019/03/05(火) 18:45:38.42 ID:???.net<> >>236
作ってすらおらずリンク貼っただけらしいww <> Name_Not_Found<>sage<>2019/03/05(火) 19:10:51.59 ID:???.net<> >>237
何がしたいのか全然わからん <> Name_Not_Found<>sage<>2019/03/05(火) 20:12:01.89 ID:???.net<> >>235
チェーンは非同期に動的に組み変わるものだからね
ただしチェーンが変わってもプロミスオブジェクトは変わらないからね <> Name_Not_Found<>sage<>2019/03/05(火) 20:19:22.27 ID:???.net<> >>239
すみません
例えばゲーム中
https://i.imgur.com/8SKokMQ.jpg
このような画面になった時、赤枠の文字列を取得したいのです
そして取得した文字列をhtml上に表示させたいです <> Name_Not_Found<>sage<>2019/03/05(火) 20:23:45.21 ID:???.net<> >>241
本当にしたいことはhtmlに表示させることじゃないと思うけど・・・

質問にそのまま回答するなら
これがjsで動いてるゲームなら開発ツールで簡単に取得できる <> Name_Not_Found<>sage<>2019/03/05(火) 22:43:24.94 ID:???.net<> >>235
プロミスチェーンという言葉を気にする必要はないよ

プロミスを使えばチェーン出来ますよ、
チェーンできるようにしたのがプロミスですよってだけだから

プロミスがない時代、非同期処理を書こうとすると

foo(function() {
 bar(function() {
  baz(function() {
  });
 });
});

みたいに、どんどんネストが深くなってしまっていた。
これをこんなふうに縦に並べてかけますよーってのがプロミスで
縦に並べて書いたものをプロミスチェーンと呼ぶってだけ

foo()
.then(function() {
 return bar();
}).then(function() {
 return baz();
}); <> Name_Not_Found<>sage<>2019/03/05(火) 23:29:26.00 ID:???.net<> JQueryのresizableについて質問なのですが
マウスカーソルがポインターになる部分(つまめる部分)の範囲を大きくすることは可能でしょうか?
1~3ドット分ぐらいしかないのでつまみづらいなと思い大きくしたいです。 <> Name_Not_Found<>sage<>2019/03/06(水) 00:06:35.50 ID:???.net<> >for文無限ループURL投稿で女子中学生が兵庫県警に補導
>補導されたのは、愛知県刈谷市に住む中学1年生の13歳の女子生徒で、
>警察によりますと、インターネットの掲示板に、不正なプログラムのアドレスを書き込んだ疑いがもたれています。
>このプログラムでは、クリックすると、画面の真ん中に「何回閉じても無駄ですよ〜」という文字や、顔文字などが表示され続けるよう設定されているということです。 <> Name_Not_Found<>sage<>2019/03/06(水) 03:20:37.17 ID:???.net<> >>237
他人が作った、起動中のアプリに、外部からアタッチできないだろ。
そのアプリを自分で分析して改造するなど、しないと無理

ブラウザゲームなどのHTML アプリなら、
そのHTMLを解析して、Ruby, Selenium Webdriver などを使って、アタッチできる

iMacros と言う、ブラウザを自動操作するソフトもある <> 244<>sage<>2019/03/06(水) 03:34:26.76 ID:???.net<> >>241
アプリでも様々な種類があるから、
対応できるのは、ブラウザゲームなどのHTML アプリだけ

ブラウザゲームなら、F12 を押せば、開発者ツールが起動する。
それを見て、他人のソースコードを分析していくから大変

取得したい文字列の上で、マウスで右クリックメニューを開いて、要素の検索をすればよい

でも、かなりプログラミングできないと、他人のアプリなど解析できないよ。
そのアプリの仕様書が無いから、何をやっているのか、全くわからないため

まだ会話を続けるなら、名前欄に、235 と入れて投稿して <> Name_Not_Found<>sage<>2019/03/06(水) 08:45:20.32 ID:???.net<> >>246-247
死ね <> Name_Not_Found<>sage<>2019/03/06(水) 09:16:30.52 ID:???.net<> rubyだけは絶対に使わないように <> Name_Not_Found<>sage<>2019/03/07(木) 07:10:09.29 ID:???.net<> >>246
現代ならスクリーンキャプチャして
文字解析WebAPI叩くとか現実的 <> Name_Not_Found<><>2019/03/07(木) 07:12:49.68 ID:ahDydsPD.net<> 10数年ぶりにサイト作るんだけど、昔はJavaScriptを停止してるブラウザいっぱいあったけど、
今のブラウザは100%Javascript動くと思ってOK? <> Name_Not_Found<>sage<>2019/03/07(木) 12:28:15.90 ID:???.net<> そもそもjavascript動かしただけで犯罪になるのが日本だからな
逮捕されることを覚悟してやるしかねえわ <> Name_Not_Found<><>2019/03/07(木) 13:38:59.97 ID:RgmxSmXK.net<> replace用の第1引数と第2引数のペアをまとめてオブジェクトに入れておいて呼び出したいのですけど
どんな感じでやるんですかね

今だと
const regObj = { 'a':正規表現, 'b':正規表現, 'c':正規表現 ];
const strObj = { 'a':文字列, 'b'文字列, 'c':文字列 };
const index = 'c';
text.replace(regObj[index], strObj[index]);

って別々の配列使っちゃってるんですけど
まとめたほうがわかりやすいだろうなと

一応
const regStrObj = {
 'a' : [ 正規表現, 文字列 ],
 'b' : [ 正規表現, 文字列 ],
 'c' : [ 正規表現, 文字列 ],
};
const arr = regStrObj['c'];
text.replace(arr[0], arr[1]);
って方法は思いつくものの、なんかもっといい書き方があるような気がして <> 251<>sage<>2019/03/07(木) 13:41:14.14 ID:???.net<> >>253の最初のconstの行の末尾は ]; じゃなくて }; です… <> Name_Not_Found<><>2019/03/07(木) 13:46:09.53 ID:/wM/uMMX.net<> ゼビオ行きたい <> Name_Not_Found<>sage<>2019/03/07(木) 15:42:08.00 ID:???.net<> >>253
こんなんは?てきとうだけど。
const replaceRules = {
 'a' : [ 正規表現, 置換文字列 ],
 'b' : [ 正規表現, 置換文字列 ],
 'c' : [ 正規表現, 置換文字列 ],
};
const replaceByRule = rule => str => str.replace(...rule);
使い方
const replaceByRuleC = replaceByRule(replaceRules['c']);
const replacedText = replaceByRuleC(text);
または
const replacedText = replaceByRule(replaceRules['c'])(text); <> Name_Not_Found<>sage<>2019/03/07(木) 20:34:22.92 ID:???.net<> >>253
もっと柔軟に考えな
定義はできるだけシンプルのほうが良い
アクセスは構造化されていたほうが良い
この2つは両立できる <> Name_Not_Found<>sage<>2019/03/07(木) 21:22:34.99 ID:???.net<> 本来順序がないものに配列使うのは好きじゃないなぁ
だからArray#entries/Object.entriesとかも好きになれない <> Name_Not_Found<>sage<>2019/03/07(木) 22:01:19.13 ID:???.net<> entiries系は走査が目的で順序なんて気にしないことの方が多いでしょ <> Name_Not_Found<>sage<>2019/03/07(木) 22:22:19.75 ID:???.net<> >>259
key/valueを配列で持ってるでしょ
そのことよ <> Name_Not_Found<>sage<>2019/03/07(木) 22:32:00.21 ID:???.net<> [key, value] of entries
とかすりゃいいだけじゃん <> Name_Not_Found<>sage<>2019/03/07(木) 22:35:49.82 ID:???.net<> >>253
new Map <> Name_Not_Found<>sage<>2019/03/07(木) 23:01:32.97 ID:???.net<> >>261
多分もうそれが嫌なんじゃない?
jsのArrayオブジェクトを静的型付け言語の配列と同じように考えてるっぽい <> Name_Not_Found<>sage<>2019/03/08(金) 01:30:24.56 ID:???.net<> >>263
え、違和感ない?一ミリも?
他にもMapに配列リテラル与えるのも違和感あるんだが <> Name_Not_Found<>sage<>2019/03/08(金) 06:59:30.07 ID:???.net<> >>264
全く違和感ない
むしろ、>>253で無駄にキーを定義しているのが気になる
配列はキーがインデックスになっただけ <> Name_Not_Found<>sage<>2019/03/08(金) 07:22:04.29 ID:???.net<> >>264
> 他にもMapに配列リテラル与えるのも違和感あるんだが
「違和感がある」がキーのことか、引数に二次元配列を渡していることか、わからんが、既にある定義に違和感があるなら、Mapを漠然と理解している気になってるからなんじゃないかね
イテレータとか、理解してるか? <> Name_Not_Found<>sage<>2019/03/08(金) 12:39:13.11 ID:???.net<> ま、好みの問題だし[0],[1]のアクセスに全く違和感ないなら分かり合えんのでいいわ
デストラクチャリングできるから良いって問題じゃないし
ただesには妥協の産物もあるってことは理解しといたほうがいいぞ <> Name_Not_Found<>sage<>2019/03/08(金) 12:43:32.37 ID:???.net<> jsが妥協だらけなんてことは大前提の上での話だと思うけど……生まれからして開発者と会社間の妥協の産物やないか <> Name_Not_Found<>sage<>2019/03/08(金) 12:53:34.47 ID:???.net<> すべての言語が妥協だらけなんてことは大前提の上での話だと思うけど…… <> Name_Not_Found<>sage<>2019/03/08(金) 12:58:23.28 ID:???.net<> 我が人生に一片の妥協なし! <> Name_Not_Found<>sage<>2019/03/08(金) 15:23:48.72 ID:???.net<> ちなみにリリースしたてのreact hooks apiの使用例:
const [count, setCount] = useState(initialCount);
5ちゃんのスーパーハカーによると妥協の産物である。 <> Name_Not_Found<>sage<>2019/03/08(金) 22:50:57.61 ID:???.net<> だからそれもデストラクチャリング前提の妥協の産物でしょ <> Name_Not_Found<>sage<>2019/03/08(金) 22:57:47.68 ID:???.net<> メモリ上に並ぶんだからどうやったって順序があるだろ <> Name_Not_Found<>sage<>2019/03/09(土) 09:28:00.16 ID:???.net<> 違和感ある/なしの感想だけを求めて理由はどうでも良かったのか
すぐ共感を求める女性のような考え方だな <> Name_Not_Found<>sage<>2019/03/09(土) 10:13:36.21 ID:???.net<> これか?
 'a' : [ 正規表現, 文字列 ],

key が文字列で、value がコンテナなんて、
JSON なんか、ほとんどこればっかりだろ

違和感なんて感じないけど? <> Name_Not_Found<>sage<>2019/03/09(土) 10:17:40.04 ID:???.net<> Mapや配列にした途端に違和感があるという不思議ちゃん <> Name_Not_Found<>sage<>2019/03/09(土) 10:56:59.23 ID:???.net<> >>258はPHPの連想配列にも不満をいいそう <> Name_Not_Found<>sage<>2019/03/09(土) 11:49:05.06 ID:???.net<> >>267
考え方が狭いだけだと思うよ
[a,b],
[c,d],
[e,f]
って
_ key val
0 a b
1 c d
2 e f
のような項目名が暗黙のテーブルってだけなんだよ
なんか配列というものにへんな固定観念を持ってるから違和感を感じるだけなんだよ
定義はシンプルな方が良いんだからさ
{key:'a',value:'b'},{key:'c',value:'d'},{key:'e',value:'f'}
みたいにするよりは配列を使ったほうが良いんだよ
別に[a,b],[c,d],[e,f]と書いて置いてオブジェクトに変換して使うとかも簡単にできるんだからさ
そのへんが内部的にも行われてると考えればいいだけで変なこだわりを持っても価値がないんだよ <> Name_Not_Found<>sage<>2019/03/09(土) 13:14:08.88 ID:???.net<> 元は順序がどうとか言ってたから、arr[3]みたいな順序に依存したアクセスが気にくわないと言うのならわかる <> Name_Not_Found<>sage<>2019/03/09(土) 13:15:16.54 ID:???.net<> そもそも、new Mapの引数にはiterableが指定可能で配列限定ではないんだが <> Name_Not_Found<>sage<>2019/03/09(土) 13:20:11.46 ID:???.net<> o = { a:'b', c:'d', e:'f' }
new Map(Object.entries(o))
でいいじゃん <> Name_Not_Found<>sage<>2019/03/09(土) 17:50:19.98 ID:???.net<> iterableの考え方が出来てない人が「妥協の産物」と断じているだけだろう <> Name_Not_Found<>sage<>2019/03/09(土) 18:29:25.30 ID:???.net<> 本人も両親の妥協の産物なのです <> Name_Not_Found<>sage<>2019/03/09(土) 23:39:17.89 ID:???.net<> 一週間前に始めた超初心者です。

htmlファイルと外部読み込みjavascriptファイルをPCで作り、スマホに送ってクロームで開いたところ、
htmlは表示されましたが、どうしてもjavascriptがうまくいきません。なぜでしょうか?
(スクリプトをhtmlに直接書き込むと動作するので、外部読み込みファイルの指定の仕方が悪いと思っています。)

【外部ファイル指定部分】
<a href="./time.html" target="frame_name" >現在時刻</a><br>
<iframe name="frame_name" width="200" height="50" ></iframe><br> <> Name_Not_Found<>sage<>2019/03/10(日) 00:12:22.00 ID:???.net<> >>284
まず服を脱いでください <> Name_Not_Found<>sage<>2019/03/10(日) 04:49:06.65 ID:???.net<> 質問です。

var x = 123;

function hello(){
var y = 456;

var button = document.getElementById("btnElement");
button.onclick = function(mouseEvent){ console.log("x="+x+",y="+y); };
}

このときyがundefinedになりますが、
クリックのイベントハンドラ内にyを渡す方法はありませんか? <> Name_Not_Found<>sage<>2019/03/10(日) 06:38:27.92 ID:???.net<> >>286
> このときyがundefinedになりますが、
button.onclick の関数を定義してるのはhello関数のスコープ
hello関数で定義しているyは参照できるはず
適当に補って試してみたが再現しない

変数のスコープ説明のためのソースっぽいけど、このソースそのままなの?
どこかtypoしてないか? <> Name_Not_Found<><>2019/03/10(日) 09:11:19.04 ID:Ny88Q30p.net<> addEventListener()の勉強しています
3つボタンを用意して押下するとそれぞれの数字がアラートで表示されるものを作りました
index.html
<button id="btn1" value="1" onclick="show(1)">ボタン1</button>
<button id="btn2" value="2" onclick="show(2)">ボタン2</button>
<button id="btn3" value="3" onclick="show(3)">ボタン3</button>
main.js
function show(val) {
alert(val);
}
こちらをonclickを使わずにaddEventListenerを使ってこのように再現しました
const fnc = function(a) {
alert(a.currentTarget.value);
}
document.addEventListener("DOMContentLoaded", function() {
var btn1 = document.getElementById("btn1");
btn1.addEventListener("click", fnc, false);
var btn2 = document.getElementById("btn2");
btn2.addEventListener("click", fnc, false);
var btn3 = document.getElementById("btn3");
btn3.addEventListener("click", fnc, false);
}, false);
簡潔に短く書く方法はないでしょうか?
仮にボタン10個に増えたときは下のボタン取得とクリックしたら〜の2行を10回繰り返すのでしょうか <> Name_Not_Found<>sage<>2019/03/10(日) 09:30:41.49 ID:???.net<> >>287
すいません、ちょっと違いました
function(){}とvar = function(){}でスコープが違うんですね・・・

var x = 123;

var world = function hello(){
 var y = 456;

 var button = document.getElementById("btnElement");
 button.onclick = function(mouseEvent){ console.log("x="+x+",y="+y); };
} <> Name_Not_Found<>sage<>2019/03/10(日) 09:53:35.90 ID:???.net<> >>288
それならjQueryを使うと良い。単純に置き換えるだけでもここまで短くなる

function fnc(event) {
alert(event.currentTarget.value);
}
$(function() {
var btn1 = $("#btn1");
btn1.click(fnc);
var btn2 = $("#btn2");
btn2.click(fnc);
var btn3 = $("#btn3");
btn3.click(fnc);
});

一時変数を使うまでもないのでこうだな

function fnc(event) {
alert(event.currentTarget.value);
}
$(function() {
$("#btn1").click(fnc);
$("#btn2").click(fnc);
$("#btn3").click(fnc);
}); <> Name_Not_Found<>sage<>2019/03/10(日) 09:55:39.91 ID:???.net<> そして根本的にやるならこう

<button id="btn1" value="1" class="btn">ボタン1</button>
<button id="btn2" value="2" class="btn">ボタン2</button>
<button id="btn3" value="3" class="btn">ボタン3</button>

$(function() {
$(".btn").click(function() {
alert(this.value);
});
}); <> Name_Not_Found<>sage<>2019/03/10(日) 10:44:08.26 ID:???.net<> >>288
const $$ = q => [...document.querySelectorAll(q)]

を定義しておいて、冗長になっているところを、

$$`#btn1,#btn2,#btn3`.forEach(el => el.addEventListener('click', fnc, false))

で置き換えては?
また、

$$(['#btn1', '#btn2', '#btn3']).forEach(el => el.addEventListener('click', fnc, false))

と書くこともできるから、以下のようにすれば対象要素増やしたいときも配列にセレクタ追加するだけで対応できるよ。

const selectors = [
'#btn1',
'#btn2',
'#btn3',
'#btn4', // new!
]

$$(selectors).forEach(el => el.addEventListener('click', fnc, false)) <> Name_Not_Found<>sage<>2019/03/10(日) 11:24:50.09 ID:???.net<> >>288
ボタンが一列に並ぶかどうかとか色々不明な前提条件があるので
すまんけど明確な方針は出せない
少なくとも適用する関数が全て同じfncならば、
idじゃなくてclassでまとめることをオススメする
https://jsfiddle.net/kgn91oyL/ <> Name_Not_Found<>sage<>2019/03/10(日) 11:36:16.09 ID:???.net<> >>288

>>291のコードを動くようにしてみた
https://jsfiddle.net/r38gt724/

更に一行で書いてみた。
個人的にはアロー関数は戻り値を使うべきだと思ってるので好きではないが
https://jsfiddle.net/pm4cqf75/ <> 286<><>2019/03/10(日) 15:33:27.62 ID:Ny88Q30p.net<> >>289-294
ありがとうございます
様々な書き方があって勉強になります
jQueryはまだ名前を知っている程度なのですが、とても興味を唆られました <> Name_Not_Found<>sage<>2019/03/10(日) 15:35:20.25 ID:???.net<> >>290-294でした <> Name_Not_Found<>sage<>2019/03/10(日) 16:00:41.96 ID:???.net<> >>288
個別ボタンにaddEventlistenerするのではなく外側の要素でイベント取ってclass等で判別するとか
https://jsfiddle.net/o3s2mwp9/ <> Name_Not_Found<>sage<>2019/03/10(日) 17:11:57.07 ID:???.net<> >>288
var btn1 = document.getElementById("btn1");
などはまるごと省略してよい
id属性をもつ要素はそのままグローバルプロパティとして現れる決まりがある <> Name_Not_Found<>sage<>2019/03/10(日) 17:22:18.21 ID:???.net<> >>297と同等のことをjQueryであるとこうなります。

document.getElementById("buttons").addEventListener("click", ev => {
 if (ev.target.classList.contains("btn")) {
  alert(ev.target.value);
  }
});



$("#buttons").on("click", '.btn', function(event) {
 alert(this.value);
});

https://jsfiddle.net/3t1nv7kq/ <> Name_Not_Found<>sage<>2019/03/10(日) 19:26:50.44 ID:???.net<> デザイナーってJavaScriptどらくらい理解してればいい? <> Name_Not_Found<>sage<>2019/03/10(日) 19:43:26.86 ID:???.net<> べつに必要ないんじゃない <> Name_Not_Found<>sage<>2019/03/10(日) 19:49:57.05 ID:???.net<> >>300
DOMに関してはなんでも出来ると思ってればいいけど、基本はclassの付け外しのみに抑え、
後はcssで全部やるようにすると思っておいたほうが良い
cssで出来る所をjsでやろうとすると途端に重くなる <> Name_Not_Found<>sage<>2019/03/10(日) 20:05:35.31 ID:???.net<> >>284
><a href="./time.html" target="frame_name" >現在時刻</a><br>

これは、単なるリンクだろ。
JavaScript(JS) なんて読み込んでいないよ

それとも、./time.html ファイルの中で、JSを読み込んでいるのか? <> Name_Not_Found<><>2019/03/11(月) 08:45:22.93 ID:pwrb3zCE.net<> ツイッターで#テクノロジー犯罪と検索して、まじでやばいことを四代目澄田会の幹部がやってる
被害者に対して暴力団以外にタゲそらしをしてるがやってるのは暴力団で普段外に出ることが少ないため遊びで公共の電波と同じような電波を使って殺人をしてる
統失はほとんどが作られた病気で実際は電波によって音声送信や思考盗聴ができることが最近明らかになりつつある
警察や病院では病気としてマニュアル化されてしまっているのが現状で被害者は泣き寝入りしてる
被害者がリアルタイムで多い現状を知って、被害者間でしか本当の事だと認知できていない
実際にできると思われていない事だから、ただの幻聴ではない実際に頭の中で会話ができる
できないことだと思われているからこそ真面目に被害を訴えてる
海外でも周知されつつあることを知ってほしい。
このままだとどんどん被害が広がる一方

#テクノロジー犯罪
#四代目澄田会 <> Name_Not_Found<>sage<>2019/03/11(月) 21:26:04.37 ID:???.net<> >>288
べつにonclickでもいい
var btn1 = document.getElementById("btn1");
btn1.addEventListener("click", fnc, false);
var btn2 = document.getElementById("btn2");
btn2.addEventListener("click", fnc, false);
var btn3 = document.getElementById("btn3");
btn3.addEventListener("click", fnc, false);

for(let i = 1; i <= 3; i++)window['btn'+i].onclick = fnc <> Name_Not_Found<>sage<>2019/03/11(月) 21:34:51.03 ID:???.net<> jQueryなんて時代遅れって言われたんだけど今イケてるのって何? <> Name_Not_Found<>sage<>2019/03/11(月) 21:37:41.65 ID:???.net<> 生JS <> Name_Not_Found<>sage<>2019/03/11(月) 21:39:38.12 ID:???.net<> jQueryのなんというかvbaくさい楽勝さがやめられん
アホでも書ける <> Name_Not_Found<>sage<>2019/03/11(月) 21:59:37.19 ID:???.net<> >>306
これが現実やで。周りに振り回されている人が、周りを振り回そうとしてるだけ

2017年 JavaScript★71.9%ものサイトがjQueryを利用 [無断転載禁止]©2ch.net
https://medaka.5ch.net/test/read.cgi/prog/1485008061/

↓ 2年後

https://w3techs.com/technologies/history_overview/javascript_library/all/y
73.8% (+1.9%)


Angular 0.5% → 0.4% (+0.1%)
React 0.5% → 0.2% (-0.3%)
Vue 0.1% → 0.2% (+0.1%) <> Name_Not_Found<>sage<>2019/03/11(月) 22:18:30.49 ID:???.net<> >>306
TypeScriptとか? <> Name_Not_Found<>sage<>2019/03/11(月) 22:41:08.48 ID:???.net<> >>309-310
Vueお勧めされたぜ <> Name_Not_Found<>sage<>2019/03/11(月) 22:48:02.83 ID:???.net<> 色々言いたいことはあるけど
少なくとも古い新しいの問題では無いよ
何を作るかで決まる <> Name_Not_Found<>sage<>2019/03/11(月) 23:36:18.41 ID:???.net<> 大規模サイトじゃなければ、jQuery で十分!
そこまで複雑じゃないから

それが数字に表れている <> Name_Not_Found<>sage<>2019/03/11(月) 23:44:51.54 ID:???.net<> 大規模サイトってどれくらいからいうの? <> Name_Not_Found<>sage<>2019/03/12(火) 00:37:48.41 ID:???.net<> 大規模って言葉がおかしいと思う

セキュリティか個人情報扱う時に一気に難易度が跳ね上がる
具体的にはユーザーログイン・ECが付くと大規模になる

静的ページなんぞ10000ページあっても大規模でもなんでもない <> Name_Not_Found<>sage<>2019/03/12(火) 00:53:24.71 ID:???.net<> じゃあ通販サイトなんかは大規模サイトでいいのかな?
大規模サイトもjQuery使ってるよね <> Name_Not_Found<>sage<>2019/03/12(火) 00:56:35.71 ID:???.net<> それは大規模な静的サイトだろ。
規模が大きいか小さいかと、動的か静的かは直交する。
10000ページあって小規模とか頭大丈夫? <> Name_Not_Found<>sage<>2019/03/12(火) 01:11:09.28 ID:???.net<> ぼくの3000ページのwordpressブログは中規模サイトでいいですか? <> Name_Not_Found<>sage<>2019/03/12(火) 01:14:42.94 ID:???.net<> これは聞いてみたいな

昔、簡易HP作成サイトが当たって30000アカウントに登録してもらえた
・FWを除けばphpファイルは10ファイルぐらい
・30000アカウント集まって30000ページのサイト
これって大規模に当たる?
最初の開発は一週間ぐらいで終わった <> Name_Not_Found<>sage<>2019/03/12(火) 01:41:28.75 ID:???.net<> >>318
すげえなw
すげえ…ヒマなんだなw <> Name_Not_Found<>sage<>2019/03/12(火) 02:21:38.02 ID:???.net<> >>320
無職になって作ったエロアフィブログだ
サーバー設定、プログラミング、コンテンツ作成等メチャクチャ勉強になったな。今も進化中だ
儲けは少ないが一部マニアに非常に高い評価をいただいておる
海外のエロレビューサイトにも高レスポンスな良心的サイトとして紹介されたりもしたよ <> Name_Not_Found<>sage<>2019/03/12(火) 20:16:22.42 ID:???.net<> 残念ながらエロにレスポンスは求められていない <> Name_Not_Found<>sage<>2019/03/12(火) 20:33:40.61 ID:???.net<> >>322
あほ、メチャクチャ求められるわ <> Name_Not_Found<>sage<>2019/03/12(火) 21:46:31.47 ID:???.net<> エロに重要なのは
広告で邪魔しないこと
クリック押したらすぐに表示されること
シークしたらすぐに移動すること
ダウンロードできること <> Name_Not_Found<>sage<>2019/03/12(火) 23:17:21.21 ID:???.net<> 最近はわざわざダウンロードする必要ないって事に気づいた <> Name_Not_Found<>sage<>2019/03/12(火) 23:24:01.23 ID:???.net<> ダウンロードしないとぶつ切りにならん? <> Name_Not_Found<>sage<>2019/03/12(火) 23:30:54.86 ID:???.net<> それは回線が悪いかサイトが悪いか
じゃないかな <> Name_Not_Found<>sage<>2019/03/13(水) 01:45:22.73 ID:???.net<> 私も夫に毎晩メチャクチャ求められてます <> Name_Not_Found<>sage<>2019/03/13(水) 06:32:02.29 ID:???.net<> >>323
いや、残念ながら求められていない
勘違いくん♪ <> Name_Not_Found<><>2019/03/14(木) 14:13:33.51 ID:f4r4sHfI.net<> アロー演算子と無名関数の使い分けを教えて下さい
foreachの中ではアロー演算子は使わない方が良いのでしょうか?
thisがwindowを差してしまいます

thisは今まで使ってきたのですが、
アロー演算子はどういう時に使うと良いのでしょうか?? <> Name_Not_Found<><>2019/03/14(木) 14:30:58.38 ID:f4r4sHfI.net<> 正規表現の置換を教えて下さい

最終的にはinputに入力された文字列から数字のみを抜き出し、全て半角数字にしたいのです

入力:
あ0い1う2え3お4

結果:
012345

"あ0い1う2え3お4".replace(/^[0-9]/u, '')
ではうまく行きませんでした、どなたかお助けを〜 <> Name_Not_Found<>sage<>2019/03/14(木) 15:05:51.78 ID:???.net<> h ={'0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7','8':'8','9':'9'};

"あ0い1う2え3お4".replace(/./g, (c)=>{
if (c.match(/\d/)) return c;
if (c.match(/[0-9]/)) return h[c];
return '';
}); <> Name_Not_Found<>sage<>2019/03/14(木) 15:11:43.54 ID:???.net<> >>331
"あ0い1う2え3お4".replace(/[0-9]/g, c => String.fromCodePoint(c.codePointAt(0) - 0xFEE0)).replace(/[^0-9]/g, ''); <> Name_Not_Found<>sage<>2019/03/14(木) 15:13:38.40 ID:???.net<> normalize()を使おうぜ <> Name_Not_Found<><>2019/03/14(木) 15:13:39.18 ID:1lyNtq79.net<> >>332-333
すごい!
半日ぐらい頑張った苦労は一体・・・w

ありがとうございました!! <> Name_Not_Found<>sage<>2019/03/14(木) 15:31:05.00 ID:???.net<> >>330
基本的にthisを使わない(挙動をコードを書いた時点で確定する)方針にしようぜって思想が根底にある
どうしても使いたいときは明示的にbindする <> Name_Not_Found<><>2019/03/14(木) 15:39:59.51 ID:1lyNtq79.net<> >>336
ありがとうございます
思想に頭が追いつかない(@@;
もう少し勉強します <> Name_Not_Found<>sage<>2019/03/14(木) 15:49:26.14 ID:???.net<> > 基本的にthisを使わない(挙動をコードを書いた時点で確定する)方針にしようぜって思想が根底にある
ないから(笑) <> Name_Not_Found<>sage<>2019/03/14(木) 16:13:00.64 ID:???.net<> >>338
「使わない」じゃなくて「束縛しない」だな
すまん <> Name_Not_Found<>sage<>2019/03/14(木) 17:06:18.92 ID:???.net<> >>339
だからそういう思想があるわけじゃない。
thisが必要ないから結果としてそうなっただけ <> Name_Not_Found<>sage<>2019/03/14(木) 18:22:12.31 ID:???.net<> MDNにめっちゃ詳しく書いてあった
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions

アロー関数はthisを持たないとか初めて知った
ちゃんとMDN読んどくべきだなあ <> Name_Not_Found<>sage<>2019/03/15(金) 05:47:18.43 ID:???.net<> 持たない?むしろ持ってるのだと思うが
関数オブジェクトが作られるときに束縛される <> Name_Not_Found<>sage<>2019/03/15(金) 08:01:12.85 ID:???.net<> うんthis以外にも違いはあるけどthisについては定義時にvar hoge = (function() {〜}).bind(this)としてるようなもんだからな <> Name_Not_Found<>sage<>2019/03/15(金) 09:00:52.35 ID:???.net<> >>343
定義後にthisは変動しない仕様だった? <> Name_Not_Found<>sage<>2019/03/15(金) 09:30:17.18 ID:???.net<> アロー関数はthisを持たないってのは、別に私がそう解釈したわけじゃなくて
MDNにハッキリと書いてあるんだけど

>2 つの理由から、アロー関数が導入されました。1 つ目の理由は関数を短く書きたいということで、
>2 つ目の理由は this を束縛したくない、ということです。

>アロー関数自身は this を持ちません。レキシカルスコープの this 値を使います。
>つまり、アロー関数内の this 値は通常の変数検索ルールに従います
>(スコープに this 値がない場合、その一つ外側のスコープで this 値を探します)。

翻訳が間違ってるか、MDN自体が間違ってるってこと? <> Name_Not_Found<>sage<>2019/03/15(金) 09:33:01.75 ID:???.net<> 属するスコープの変数を参照する極々当然の挙動だな <> Name_Not_Found<>sage<>2019/03/15(金) 10:19:44.87 ID:???.net<> 翻訳か原文からそうなのか知らんが持つって言葉の使い方が戦犯
mdnなんか見てないで仕様読め仕様 <> Name_Not_Found<>sage<>2019/03/15(金) 12:00:44.39 ID:???.net<> 質問です
コールバック関数を使う関数を作りたいのですが、どう書けばよいのか分かりません。
検索しても既存のコールバック関数を伴う関数の使い方(setTimeout()の使い方など)ばっかり出てきて
そういう関数の「作り方」が出てこないのです…
早い話がsetTimeout()のような関数本体の方を作り、書きたいのですが
どうすればいいんでしょうか? どう検索したら出てきますかね? <> Name_Not_Found<>sage<>2019/03/15(金) 12:13:05.56 ID:???.net<> コールバック関数を使う関数

function(func){
func()
} <> Name_Not_Found<>sage<>2019/03/15(金) 12:15:35.98 ID:???.net<> var コールバック使う関数 = function(コールバック) {
var コールバック使う関数が用意するデータ = 'hello, ';
var result = コールバック(コールバック使う関数が用意するデータ);
return result;
};

使い方:
var 文字列の長さを返す関数 = function(文字列) {
return 文字列.length;
};
var 文字列の後ろにworld足して返す関数 = function(文字列) {
return 文字列 + 'world';
};
console.log(コールバック使う関数(文字列の長さを返す関数));
//=> 7
console.log(コールバック使う関数(文字列の後ろにworld足して返す関数));
//=> hello, world <> Name_Not_Found<>sage<>2019/03/15(金) 12:35:44.33 ID:???.net<> >>350-350
ありがとうございます!完全に分かりました。助かります… <> Name_Not_Found<>sage<>2019/03/15(金) 13:39:00.60 ID:???.net<> JavaScript のthis は、global のwindow などを指してしまうから、クソ仕様

だから、jQuery, Haxe では、this を修正している <> Name_Not_Found<>sage<>2019/03/15(金) 13:44:52.34 ID:???.net<> Rubyは最も一般的な方法で定義した関数(関数じゃないw)が値として取り回せない(第一級関数でない)クソ言語wwwww
def add(a, b)
a + b
end
def opTwo(a, b, func)
func(a, b)
end
p opTwo(1, 2, add)
=> Line 9:in `add': wrong number of arguments (0 for 2) (ArgumentError)
from t.rb:9
プギャーm9(^Д^ )

ちなみにPython:
def add(a, b):
return a + b

def opTwo(a, b, func):
return func(a, b)

print(opTwo(1, 2, add))
=> 3

ちなみにJavascript:
function add(a, b) {
return a + b;
}
function opTwo(a, b, func) {
return func(a, b);
}
console.log(opTwo(1, 2, add))
=> 3 <> Name_Not_Found<>sage<>2019/03/15(金) 13:48:49.73 ID:???.net<> >>353
RubyにはRubyのやり方がある

はず <> Name_Not_Found<>sage<>2019/03/15(金) 14:01:38.57 ID:???.net<> やり方?
あるよねーいっぱいw
def 、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww <> Name_Not_Found<>sage<>2019/03/15(金) 14:03:38.05 ID:???.net<> >>347
逆ギレワロタw <> Name_Not_Found<>sage<>2019/03/15(金) 15:21:31.66 ID:???.net<> スクリプト内部でcreateElement('canvas')として動的にキャンバス要素を作成しているのですが、このキャンバスを右クリック、「名前をつけて画像を保存」を選択すると、すべてのファイル(*.*)となってしまいます。
jpegやpng形式で保存出来るようにしたいのですが、どうすればいいのでしょうか? どなたか教えて下さい。
使用しているブラウザはグーグルクロームです。 <> Name_Not_Found<>sage<>2019/03/15(金) 15:31:35.89 ID:???.net<> 保存ボタン付けるならやったことあるけど右クリックか。
どうやるんだろ? <> Name_Not_Found<>sage<>2019/03/15(金) 18:03:13.99 ID:???.net<> >>352
指してしまうってw
指す用に自分で書いてるだけなのに…

プログラムは思うようには動かんの
書いたように動くだけ <> Name_Not_Found<>sage<>2019/03/15(金) 20:26:29.49 ID:???.net<> >>345
thisは全ての関数内でキーワードとして動作する
だから「持つ」「持たない」というとそういう仕組みを持っているのかの話と
取られかねないのでオススメしない

thisキーワードは[[ThisValue]]が束縛され得る最も近いスコープを検索して
その[[ThisValue]]を参照しようとする
アロー関数の関数スコープは束縛しない事になっているので検索から外される <> Name_Not_Found<><>2019/03/15(金) 23:42:16.73 ID:i8BKzs9E.net<> 何を言ってるのか分からんが、少なくとも俺はアロー演算子を使わない方が良さそうということだけよく分かる <> Name_Not_Found<>sage<>2019/03/15(金) 23:57:46.29 ID:???.net<> なんでやねんw <> Name_Not_Found<>sage<>2019/03/16(土) 04:50:02.55 ID:???.net<>  function hoge(){}

hogeはwindow(global)のメソッドだからthisはwindow

 var A = {
   hoge : function(){}
 };

hogeはAのメソッドだからthisはA


 var img = document.querySelector('#img');
 img.addEventListener('click', A.hoge);
 img.addEventListener('click', function(){ });

imgにA.hogeという関数がバインドされて実行されるからthisはimg
ただし

 img.addEventListener('click', () => { });

アローの場合は、ひとつ上のスコープのthis



て理解であってますか? <> Name_Not_Found<>sage<>2019/03/16(土) 05:25:00.08 ID:???.net<> >>363
> var A = {
>   hoge : function(){}
> };
>↑
>hogeはAのメソッドだからthisはA

A.hoge()で呼び出される限りにおいてはYes。
「FunctionオブジェクトがAのhogeプロパティに設定されている」だけで
必ずしも「Functionオブジェクトを呼び出したときのthisがAになる」わけではない

この辺がクラスベース言語のインスタンスメソッドとは違うので、混乱しやすいとこですね <> Name_Not_Found<>sage<>2019/03/16(土) 06:34:10.21 ID:???.net<> コールバック関数って数Vに出てきた合成関数みたいな認識でいいんですかね? <> Name_Not_Found<>sage<>2019/03/16(土) 06:40:46.53 ID:???.net<> >>363
globalになるのは、非Strict Modeのみ <> Name_Not_Found<>sage<>2019/03/16(土) 06:56:55.24 ID:???.net<> >>363
違う
thisは関数の呼ばれ方によって決まって
「.」演算子によってReference内部型が作られるときに決まる
直に呼ぶとsloppy modeのときはglobalになるという決まりなだけ
簡単に言うとobj.func()と呼んだ時onjがthisになるというだけ
thisは第0番目の引数とでも思えば良い <> Name_Not_Found<>sage<>2019/03/16(土) 07:48:03.97 ID:???.net<> >>365
見た目はそうだけど、そう言って良いもんかどうか
まあ引数に関数渡して、そっちで実行してねってやつだよ

例えば関数Aの後に関数Bを実行したいけど、Aが

function A(){
  setTimeout(function(){

    // ふはははは、いつ終わるかわかるまい!

  }, Math.floor( Math.random() * 1000 ));
}

こんなのだと、Bをいつ発火させればいいかわからん
そんなとき

function A( callback ){
  setTimeout(function(){

    // おわたぁ!
    callback();

  }, Math.floor( Math.random() * 1000 ));
}

こうしておいて

A( B );

ってすれば、ちゃんとAが終わってからBが発火する、よね!
って考え方がコールバック <> Name_Not_Found<>sage<>2019/03/16(土) 07:58:29.93 ID:???.net<> 数学の合成関数ってのは

x = y + 1 = f(y)、 y = z - 1 = g(z)

としたとき

x = f( g(z) )

と出来るねって話
これをプログラムっぽく書くと

function f(y){ return y + 1; }
function g(z){ return z - 1; }

x = f( g(z) );

こんな感じになる
これは関数fの引数に、関数gを実行した結果を渡しているわけであって
関数gを渡しているわけではない

のでこれはコールバックとは呼ばない、と思う <> Name_Not_Found<>sage<>2019/03/16(土) 08:00:06.25 ID:???.net<> 数学の「=」は等号だけど
プログラムの「=」は代入なので
そのへん気をつけて <> Name_Not_Found<>sage<>2019/03/16(土) 20:29:39.66 ID:???.net<> 漫画のコマ割りツールを作ろうとしているのですが
(1)テンプレート(ブログのカラムみたいな)方式
 ・1ページ分、コマ単体の中にさらにテンプレートを用意、みたいな
 ・テンプレート以外の微妙な調整ができない
(2)mousemoveなりで(居合斬りみたいに)直線で切り分け方式
 ・割った部分だけの削除後の再描画のアルゴリズムがよくわからない
 ・柔軟性あり
(3)線描画ツール方式
 ・特定の図形を描画できる
 ・テンプレート式だが柔軟性もある
 ・目視配置なのでズレが気になる(マス目内だけを移動するように補正すればよいかも)
を考えてみました(まだ作っていない)
何か効率の良いアイデアはないでしょうか?
(おそらく普通?は(2)のシミュレーション方式で、canvasに再描画する感じで
コマと枠線を選択し編集できる機能を別々に作ってー、という風にすると思うのですが
せっかくなのでブラウザとかHTMLやCSSをうまく組み合わせて効率よくできないものかと思ったのです)

すでに作ったもので言えば、DOM要素に横割り縦割り機能をつけ
要素を割ったら(要素の中に要素を作る)その中の要素にも縦横割り機能がつく、をループ(比率調整付き)
みたいなのは作ったのですが、垂直割りしかできないのでなんか今一です(キャプチャはブラウザの拡張)
要素を台形とかにできれば良いのですが・・ <> Name_Not_Found<>sage<>2019/03/16(土) 20:36:49.93 ID:???.net<> >>370
JSの=は代入じゃない
所謂共有渡しにおける名前付け <> Name_Not_Found<>sage<>2019/03/16(土) 20:53:51.27 ID:???.net<> Assignment Operators
Syntax
https://www.ecma-international.org/ecma-262/5.1/#sec-11.13

JSで参照になるのはArrayや関数含めたオブジェクトで、数値やtrue/falseなどのプリミティブ値は値で、文字列はちょっと特殊じゃなかったっけ。
本当に全部参照になってるのはPythonだった気がする <> Name_Not_Found<>sage<>2019/03/16(土) 21:03:22.23 ID:???.net<> >>371
そのまま作り続けろ
1年後行き詰まるからCanvasで作り直せ
10年後良いものができてる
冗談でなくおれはそうしてものづくりをしてきてる <> Name_Not_Found<>sage<>2019/03/16(土) 21:05:46.41 ID:???.net<> >>373
JSに参照とかはない(Reference型はあるが)

値は基本的に複製されることはなく
すべて同一存在の名前付けの連鎖でしかない
要するにお前が会社ではタッ君と呼ばれ、家ではターちゃんと呼ばれてるのと同じ <> Name_Not_Found<>sage<>2019/03/16(土) 21:26:22.98 ID:???.net<> あんまり触らないほうがよさそうだな <> Name_Not_Found<>sage<>2019/03/16(土) 21:39:16.61 ID:???.net<> 変に他の言語に引っ張らなければJavaScriptはシンプルでわかりやすい言語だと思うけどなぁ <> Name_Not_Found<><>2019/03/16(土) 23:07:35.34 ID:ivBQEyNOT<>簡単な電卓を作成できるようになった初心者ですが、
初心者から中級者を目指すのにオススメな参考書ってありますか?
JavaScript コードレシピ集か、改訂新版JavaScript本格入門とか
検討中です。レシピ集はアマゾンレビューで、この本を見て実際に
コードを書いて動かしてみる。という学習が一番身につくと思う
とか書かれてますが買った人いたら感想聞かせて欲しいです。
田舎すぎて置いてある本屋さんがありません。<> Name_Not_Found<>sage<>2019/03/17(日) 00:27:38.62 ID:???.net<> >>371
何かの図形描画ツールを参考にすれば? <> Name_Not_Found<><>2019/03/17(日) 10:46:23.51 ID:oYnZimu7.net<> 今jsのロクでも無い部分ってあるのかな
昔はundefinedがうんちだった <> Name_Not_Found<>sage<>2019/03/17(日) 11:53:16.69 ID:???.net<> undefinedなんて実際に問題になることなかったろ
undefinedに何か代入するとかワザと壊しにかかってるんだからその結果壊れても問題ないでしょ
他にも置き換えられたら困るものなんて無数にあるんだし <> Name_Not_Found<>sage<>2019/03/17(日) 11:58:56.33 ID:???.net<> 他の言語は知らんがjsは基本
昔動いてたコードは今も動く
動いてたうんちコードは今も動くはず
'use strict'がなければundefined = 'puyopuyo'も <> Name_Not_Found<>sage<>2019/03/17(日) 13:08:53.43 ID:???.net<> node.jsの使い途が分からない。 <> Name_Not_Found<>sage<>2019/03/17(日) 14:31:49.75 ID:???.net<> >>383
使わなきゃいいじゃん <> Name_Not_Found<>sage<>2019/03/17(日) 16:50:28.45 ID:???.net<> 使いみちが分からんものを使ってみるのも大事だぞ
そのときには使えなくても後々使うかもしれない <> Name_Not_Found<><>2019/03/17(日) 17:18:44.38 ID:RNotdYYW.net<> node.jsは一度使っておいたほうが良い <> Name_Not_Found<>sage<>2019/03/17(日) 19:26:56.07 ID:???.net<> Node.js、コマンドラインでは毎日使ってるし
(ただ単にバッチファイルをダブルクリックしたら起動してファイルを生成してくれるってだけだけど)

一応localhostでなんやかんやするやつのチュートリアルもやったけど
それらを組み合わせて色々するとなると、コールバック地獄とか大変だと聞くので
なかなか重い腰が上がらずにいる
うまく使えたらすごく良さそうだと思うんだけど
このへんどこで学んだらいいものか <> Name_Not_Found<>sage<>2019/03/17(日) 21:20:14.86 ID:???.net<> JSでclip-pathを操作したいのですが、検証ツールで見ると「at center center」というおかしな値になってしまっています。
JSで設定できないCSSプロパティがあるということでしょうか?

https://jsfiddle.net/0vrcehsf/1/ <> Name_Not_Found<>sage<>2019/03/17(日) 22:57:03.93 ID:???.net<> VSCode で、Code Runner という拡張機能を入れて、右クリックメニューまたは、
Ctrl+Shift+P から、Run Code で、node.js で実行される

node は、npm, yarn を使うのに必須だから

他にも、webpack, babel, vue.js なども、たぶん、node が必須だろ <> Name_Not_Found<><>2019/03/18(月) 02:14:35.81 ID:NS7cgoce.net<> 変数aがあるとして
aが負の数(-700など)だったなら-1に
aが正の数(329など)だったなら1に
変換したいのですが、どうすればいいですか? <> Name_Not_Found<>sage<>2019/03/18(月) 02:30:12.32 ID:???.net<> Math.sign(a) <> Name_Not_Found<>sage<>2019/03/18(月) 06:47:25.25 ID:???.net<> 同期処理と非同期処理がよくわかりません
iframe使ったら勝手に非同期処理になるんですか? <> Name_Not_Found<>sage<>2019/03/18(月) 07:09:52.54 ID:???.net<> a>0?1:a<0?-1:0 <> 387<>sage<>2019/03/18(月) 17:13:49.96 ID:???.net<> >>391
それでした!ありがとうございます

危うく >>393 みたいなことするところでした <> Name_Not_Found<>sage<>2019/03/18(月) 17:38:35.25 ID:???.net<> まぁ0きたときに微妙かもしれんが <> Name_Not_Found<>sage<>2019/03/18(月) 17:45:45.85 ID:???.net<> (a<0)*-1||1 <> Name_Not_Found<>sage<>2019/03/18(月) 17:47:36.61 ID:???.net<> >>393 みたいなことしたら何かマズいのか? <> Name_Not_Found<>sage<>2019/03/18(月) 17:48:41.26 ID:???.net<> 別に>>391の方が性能や可読性高いわけでもなし、>>393で何の問題もないと思うけど <> Name_Not_Found<><>2019/03/18(月) 18:01:33.54 ID:1/b8FMfj.net<> >>391
はカッコイイけど俺の可読性が低いので使わないと思う
signとか距離求めるっ時ぐらいしか使わないよぉ <> Name_Not_Found<>sage<>2019/03/18(月) 18:09:51.31 ID:???.net<> signはIEで動かなかった思い出
今は大丈夫かな? <> Name_Not_Found<>sage<>2019/03/18(月) 18:12:19.37 ID:???.net<> ぶっちゃけIEよりfirefoxの方が上手くJS動かないこと多くない?
IE10以下は論外として <> Name_Not_Found<>sage<>2019/03/18(月) 19:06:34.58 ID:???.net<> signと三角関数のsinを勘違いしている幼稚園児が約一名いるなw <> Name_Not_Found<>sage<>2019/03/18(月) 19:18:56.62 ID:???.net<> Math.signumじゃいかんかったんかね
他にsignumをsignって書く言語あったっけ? <> Name_Not_Found<>sage<>2019/03/18(月) 20:00:11.87 ID:???.net<> >>396
これはどうして動くの <> Name_Not_Found<>sage<>2019/03/18(月) 20:16:12.55 ID:???.net<> 3つしか演算子ないんだから
流石に自分でいろんな場合考えてみようぜ <> Name_Not_Found<>sage<>2019/03/18(月) 20:17:46.82 ID:???.net<> >>404
論理演算子 ||(or)は
expr1 || expr2 としたとき
expr1がfalseとみなせる値の時、expr2を返す

falseとみなされるのは
0、-0、false、null、undefined、NaN、空文字

aが正のとき、カッコがfalseつまり0なので
0 || 1 となり、0はfalseとみなされ1が返る

aが負のとき、カッコがtrueつまり1なので
-1 || 1 となり、-1はfalseとみなされないので-1が返る <> Name_Not_Found<>sage<>2019/03/18(月) 20:25:56.89 ID:???.net<> NaNとかもあるから
a>0?1:a<0?-1:a

+a>0?1:+a<0?-1:+a
の方が良いだろうな <> Name_Not_Found<>sage<>2019/03/18(月) 20:37:27.77 ID:???.net<> (a>0)-(a<0)
が一番わかり易いでしょ <> Name_Not_Found<>sage<>2019/03/18(月) 20:44:14.80 ID:???.net<> >>408
すばらしい <> Name_Not_Found<>sage<>2019/03/18(月) 20:54:23.12 ID:???.net<> 結局signのpolyfillやないかい <> Name_Not_Found<>sage<>2019/03/18(月) 21:05:02.19 ID:???.net<> それがどうかしたのか? <> Name_Not_Found<>sage<>2019/03/18(月) 21:08:59.06 ID:???.net<> なんとか10文字に小さくできた
-(a<0>0)|1 <> Name_Not_Found<>sage<>2019/03/18(月) 21:10:26.37 ID:???.net<> と思ったら8文字でもいけたわ
-(a<0)|1 <> Name_Not_Found<>sage<>2019/03/18(月) 21:49:44.05 ID:???.net<> 7文字
a>>31|1 <> Name_Not_Found<>sage<>2019/03/18(月) 22:09:43.39 ID:???.net<> さぁ!6文字誰かいないかい?
7文字で終わりなのかい!? <> Name_Not_Found<>sage<>2019/03/18(月) 22:20:04.18 ID:???.net<> >>410
>>393以外はa=0の時の挙動がsignと違うからポリフィルにはならないような <> Name_Not_Found<>sage<>2019/03/18(月) 22:55:03.55 ID:???.net<> a=-100000000000000000000000000;
がだめじゃん
まぁガバガバだけどそこそこ動けばいいレベルだと7文字限界っぽいな <> Name_Not_Found<>sage<>2019/03/18(月) 23:26:54.17 ID:???.net<> 6文字
a/~a|1 <> Name_Not_Found<>sage<>2019/03/18(月) 23:28:06.07 ID:???.net<> >>417
対応したぞ〜
a?/^-/.test(a)?-1:1:0
0のときの挙動もsignと同じだw <> Name_Not_Found<>sage<>2019/03/18(月) 23:36:18.95 ID:???.net<> >>419
これは安全w
遅そうだけど <> Name_Not_Found<>sage<>2019/03/18(月) 23:47:54.91 ID:???.net<> 残念ながらNaNに対応できていない <> Name_Not_Found<>sage<>2019/03/18(月) 23:52:24.69 ID:???.net<> Math.sign含むMath関数はBigIntなどNumber以外の数値を受け付けないという致命的な欠点がある <> Name_Not_Found<>sage<>2019/03/18(月) 23:58:51.06 ID:???.net<> BigMathできるのかと思ったけどstandard libraryまで待つことになりそうだな <> Name_Not_Found<>sage<>2019/03/19(火) 00:12:45.40 ID:???.net<> >>421
対応したぞ〜
Number.isFinite(a)?a?/^-/.test(a)?-1:1:0:NaN <> Name_Not_Found<>sage<>2019/03/19(火) 01:06:23.68 ID:???.net<> それだとInfinityがNaNになる <> Name_Not_Found<>sage<>2019/03/20(水) 10:54:08.67 ID:???.net<> スマホ(android)でもjavaScriptの勉強がしたいのですが、使いやすい出力アプリ?はありますか?
ブラウザで出力できるのならそれでも良いのですが、なかなか難しいようで… <> Name_Not_Found<><>2019/03/20(水) 10:59:09.00 ID:9YLktb+I.net<> >>426
使いやすくはないけど
https://codepen.io
https://jsfiddle.net/

スマホで無理に書くより、大人しく仕様を読むとかにとどめておいたほうが良いとは思う <> Name_Not_Found<>sage<>2019/03/20(水) 11:20:55.93 ID:???.net<> >>427
codepenを使わせていただきます。
ありがとうございました。 <> Name_Not_Found<>sage<>2019/03/20(水) 11:55:51.31 ID:???.net<> なぜあえてそんな苦行を… <> Name_Not_Found<>sage<>2019/03/20(水) 12:09:30.47 ID:???.net<> ホリエモンの影響だろうな
スマホでなんでもやっていくスタイルには賛成だが
少なくともjavascriptのコーディングをスマホのみでやるのは数年早い
フォークしてコピペや改変くらいならまだしも <> Name_Not_Found<>sage<>2019/03/20(水) 12:46:23.84 ID:???.net<> 俺はガキの頃ガラケーのフルブラウザから始めたぞ
大丈夫、できるよ <> Name_Not_Found<><>2019/03/20(水) 13:13:03.49 ID:9YLktb+I.net<> 紙とペンの方がマシなレベル <> Name_Not_Found<><>2019/03/20(水) 20:59:06.50 ID:/d+gyT6p.net<> Blutoothキーボードだって繋げられるんだし、何も問題はない <> Name_Not_Found<>sage<>2019/03/23(土) 22:22:40.79 ID:???.net<> スマホでもIDEの補完並みのIMEがあればできるかもな あるのか? <> Name_Not_Found<>sage<>2019/03/24(日) 01:09:04.99 ID:???.net<> いらんでしょ
昔はメモ帳で書く人も多かったんだし
制約が多い中頑張ることは変な癖がつくけどそれはプラスにもなる <> Name_Not_Found<>sage<>2019/03/24(日) 11:35:11.49 ID:???.net<> すみません初心者の質問ですが
あるelementAが存在するかしないか分からない時に、
var element=elementA;
elemet.style.display="none";
というふうに書くとelementが要素でないのでstyleがundefinedになるので2行目の時点でエラーになってしまいますよね。
こういう時に「要素があれば指定の処理をする、なければ何もしない、エラーは出さない」ようにするには
var element=elementA;
if(element)elemet.style.display="none";
というふうに書くしかないのでしょうか?もう少し簡潔に書く方法とかあったりしないのでしょうか <> Name_Not_Found<>sage<>2019/03/24(日) 11:36:31.84 ID:???.net<> >>436
すみません
x というふうに書くとelementが要素でないのでstyleがundefinedになるので2行目の時点でエラーになってしまいますよね。
o というふうに書くとelementAが存在しない場合はelementが要素でなくなるのでstyleがundefinedになるので2行目の時点でエラーになってしまいますよね。
です <> Name_Not_Found<>sage<>2019/03/24(日) 14:39:16.19 ID:???.net<> >>436
十分簡潔だと思うけど…… <> Name_Not_Found<>sage<>2019/03/24(日) 14:40:07.19 ID:???.net<> あーひょっとして
ver element = elementA?elementA:new Element()
みたいなことをしたいのかな
NullObject的な <> Name_Not_Found<><>2019/03/24(日) 14:57:33.89 ID:x5MsQlEw.net<> ダミー要素を入れておくって手法も <> Name_Not_Found<>sage<>2019/03/24(日) 15:12:37.29 ID:???.net<> function ignore (f) {
try { return f(); } catch(e) {} ;
}

ignore(() => {
var element =elementA;
element.styke.display = "none";
}); <> Name_Not_Found<>sage<>2019/03/24(日) 16:03:41.23 ID:???.net<> jQuery厨さんの出番のような気がするけど今日はいないのかな? <> Name_Not_Found<><>2019/03/24(日) 19:23:39.54 ID:H9PUHQN+.net<> stykeってstrikeみたいでかっこいい <> Name_Not_Found<>sage<>2019/03/24(日) 21:41:37.21 ID:???.net<> >>442
呼んだ?w

>>436
jQueryの設計は
1. セレクタで検索する
2. 「0個以上のマッチした要素」であるjQueryオブジェクトが作られる
3. そのjQueryオブジェクトに対してメソッドを呼び出すと、
「0個以上のマッチした要素」全体に対して処理が適用される。

つまり存在してもしなくても同じように処理をかけて
要素がなければないでエラーにならないという設計だよ。
CSSと同じだね。(CSSも要素がなくてもエラーにならない)

>>436の例だと以下のように簡潔に書ける。
$(elementA).css({display: 'none');

ただ普通はこのようには書かない。
一般的には $(elementA) ではなく、$('.foo') みたいなセレクタを書くし
CSSを直接いじるのではなく $(・・・).addClass('bar'); みたいにクラス名をつけ外しして
CSS側で .bar { display: none } みたいに書く


なお >>441 はありえないクソコード <> Name_Not_Found<>sage<>2019/03/25(月) 00:26:44.23 ID:???.net<> これだけのためにわざわざ何KBもあるコードを導入しないといけない案の方が遥かにクソだけどな <> Name_Not_Found<><>2019/03/25(月) 00:31:28.97 ID:cn8CNW4E.net<> んーまぁ>>441は一番ないかな
もっとべた書きでいいと思う

>>445
このレベルの質問する人なら、もうjqueryを利用したライブラリはバンバン使ってると思う
jQueryの導入については気にしなくていいと思う

なんだったら、テンプレを作ってみては?jQueryの有無とか <> Name_Not_Found<>sage<>2019/03/25(月) 04:24:51.14 ID:???.net<> Kotlin の、?: エルビス演算子みたいな奴だろ <> Name_Not_Found<>sage<>2019/03/25(月) 08:06:16.57 ID:???.net<> 433ですありがとうございます
>>438
beautifyをかけた時に2行に分かれてしまうのがイヤだったり(そんな重要な部分じゃないのでソース上で場所とったり変に目立ったりして欲しくない)
同じ変数名を1度以上書きたくなかったり(そこが変数じゃなかったり変数名が長かった場合かさばるから)
して、まさにjQueryみたいに反応してほしいんですよね。むしろ直接
elementA.style.display="none";
と書いて、elementAが存在しなかったりエレメントじゃなかったりすれば何もせず素通りしてほしいぐらいなんです。
(elementA?).style.display="none"; とか
if(elementA).style.display="none";
みたいな書き方が(空想ですが)あればいいんですが。
>>439
そうですね、そんなふうに1行にまとめる書き方でelementAを2度書かなくてすむ書き方があれば知りたいです… <> Name_Not_Found<>sage<>2019/03/25(月) 09:10:57.61 ID:???.net<> ?.
tc39で提案されてると思う <> Name_Not_Found<>sage<>2019/03/25(月) 09:18:32.06 ID:???.net<> >>448
どちらかといえば、変数 element が100%要素ノードになるようにコードを組むか、要素ノードでない場合にTypeErrorを返す方が厳密動作で俺は好きだけどな
(バリデーションするなら、Object.getPrototypeOfとか、nodeTypeとか、tagNameとか、いろいろあるが)

君のやりたいことを実現するには、setProperty(element, 'style.display', 'none') をユーザ定義すれば良い
だが、呼び出すごとに2の乗数分の組み合わせが出来るから、そこを考慮してアルゴリズムを考える手間が必要 <> Name_Not_Found<><>2019/03/25(月) 11:45:03.06 ID:BIWwjtgP.net<> 質問です。
1=ニューヨーク
2=東京
3=パリ

として、1,2,3みたいな文字列を
ニューヨーク,東京,パリ
という風に置き換えるにはどうすれば良いですか?
1000個以上あって全部replaceだととんでもない長さになるので、良い方法を探しています。 <> Name_Not_Found<><>2019/03/25(月) 11:54:24.22 ID:cn8CNW4E.net<> 真っ先に思いついたのはメソッドチェーンだけど、1000個つなげるとエラーが出る気がして仕方がない
ソースの時点で書き換えるのはダメなの? <> Name_Not_Found<>sage<>2019/03/25(月) 12:09:20.31 ID:???.net<> 1000個くらいなら配列にしてmapしてもっかい文字列に戻せばええんちゃう? <> Name_Not_Found<>sage<>2019/03/25(月) 12:21:43.37 ID:???.net<> >>451
string.replace(/\d+/g, n => hash[n]); <> Name_Not_Found<>sage<>2019/03/25(月) 12:26:31.76 ID:???.net<> var str = '1,2,3';
var map = {
'1':'ニューヨーク',
'2':'東京',
'3':'パリ'
};

var newstr = str.replace(/\d+/g, function(match){
if(match in map){
return map[match];
}
}); <> Name_Not_Found<>sage<>2019/03/25(月) 12:29:43.99 ID:???.net<> >>451
const cities = [, 'ニューヨーク', '東京', 'パリ'];
const nStr = '1,2,3';
const cStr = nStr.split `,`.map(n => cities[n]).join();
console.log(cStr);
\\=> ニューヨーク,東京,パリ <> Name_Not_Found<>sage<>2019/03/25(月) 13:29:35.43 ID:???.net<> >>455
間違えた。訂正

var str = '1,2,3';
var map = {
'1':'ニューヨーク',
'2':'東京',
'3':'パリ'
};

var newstr = str.replace(/\d/g, function(match){
return (match in map) ? map[match] : match;
}); <> Name_Not_Found<>sage<>2019/03/25(月) 17:24:01.81 ID:???.net<> みなさま有難うございます。凄く助かりました。お陰様で理解が出来ましたので、次に進めそうです。 <> Name_Not_Found<>sage<>2019/03/26(火) 01:04:31.30 ID:???.net<> まあ、\d の所は、2桁以上にも対応するように、\d+ の方が良い

それにわざわざ、str で数字を定義しなくても、
map のすべてのキー・値を取り出せば、良いのでは? <> Name_Not_Found<>sage<>2019/03/26(火) 03:01:27.38 ID:???.net<> 1000個くらいなら何してもいいよ
JSは最も高速なメジャー汎用スクリプト言語の一つなのだから <> Name_Not_Found<><>2019/03/26(火) 08:13:40.39 ID:6Cs6H7nz.net<> チェーンメソッドを1000個繋いでも特に問題はない?
なんとなくだけどメモリを多く消費するイメージがある <> Name_Not_Found<>sage<>2019/03/26(火) 09:52:19.52 ID:???.net<> チェーンしないでいちいち何かに入れた方が負荷高かったりと予想 <> Name_Not_Found<>sage<>2019/03/26(火) 11:49:00.29 ID:???.net<> 負荷以前に、置換後の文字列を再置換するリスクを考慮すべき <> Name_Not_Found<><>2019/03/26(火) 23:54:01.48 ID:NKxGekVn.net<> イベントに対し、ブラウザのデフォルト処理(htmlタグに備わった機能、return falseで無効にできたりするアレ)が起こったあとで何かすることってできないですか?

1. ユーザーがmousedownやkeydownする
2. それらに対してJSでイベントハンドラに設定された処理が実行される
3. ブラウザのデフォルトの処理
4. ユーザーがボタンやキーを離すまで何も起こらない(ドラッグとかするならここ)
5. ユーザーがmouseupやkeyupする
6. JS
7. ブラウザのデフォルトの処理

この一連の流れのうち、2と3を入れ替えるか
あるいは3と4の間にJSで何かしたいのですが…
setTimeoutを使った方法以外にないんですかね? <> 461<><>2019/03/27(水) 00:02:17.74 ID:uvZdVCXT.net<> 特にpasteイベントなんかは、せっかくあるのに
普通に使うとペーストされた文字列を取得できなかったりするので…(ペーストされる前に何かするだけ)

https://qiita.com/neko_the_shadow/items/c05a266075c08b73bddb
ここだとやっぱりsetTimeoutを使っているようですが <> Name_Not_Found<>sage<>2019/03/28(木) 00:12:44.22 ID:???.net<> 画像をダウンロードされたくない場合に、
画像上で、右クリックメニューを開かないように、return false とかにしてるサイトがあるけど、

確か、F12 開発者ツールを起動して、return false を削除すれば、
右クリックメニューが出るようになるから、画像をダウンロードできたと思う

また、jQuery などでDOM から、return false を削除できるかも知れない <> 463<>sage<>2019/03/28(木) 00:23:25.97 ID:???.net<> 漏れは、Ruby から、Powershell のGet-Clipboard, Set-Clipboard、
または、clip コマンドを呼び出して処理している。
VBScript などからも呼べる

コマンドプロンプトで、where clip で、
C:\Windows\System32\clip.exe

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip )

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end <> Name_Not_Found<><>2019/03/28(木) 01:07:17.71 ID:ZWPLcePw.net<> ちょっと教えて欲しいんだけど、
これからPWAの基本的な使い方を学習しようと思うのだけど、開発環境はどういうのが良いの?テキトーなエディタとブラウザで進める感じ?それともvisual studio codeとか?
ゆくゆくはVue.jsあたりでSPAに進んでいくつもりだけど、最初は簡単なサイト(HTML+CSS+JS)をPWA対応しながらPWAとServiceWorkerの使い方になれていきたいと思っている

質問者はpython使いでjavascriptは基本を抑えた程度。開発環境はpycharmとかVScodeのイメージはある一方で、JSでの開発経験はないからおかしいこと言ってるかもしれない

よろしくです。 <> Name_Not_Found<>sage<>2019/03/28(木) 07:11:33.30 ID:???.net<> 何でもいい
というか一番素朴にキャッシュにSWを使ったら
SPAである必要もないことも多い
キャッシュにあるってことは高速に切り替えられるってことだから
無理に既存の平凡なサイトをSPAという名のpjax対応しても体験は変わらない
そういう面ではPWAとSPAは競合しうる概念

でもゲームのようなSPAもあるしSWのキャッシュにしたって
ちょっと拘ると、ファイル種やディレクトリごとに挙動を調整したりしないといけないし
表と連携したり、基本はないし、フレームワークに適当に任せられるものでもないので難しい <> Name_Not_Found<>sage<>2019/03/28(木) 13:31:46.16 ID:???.net<> >>1
http://nowsmartsoft.atwebpages.com/

↑こういう ToolKit を作ってるんだけど、MIT/BSD系ライセンスでオープンソース
にしたら、興味ある人いるかな。
C++で、ブラウザとWindows nativeの両方で動くアプリがソース共通で作れるんだけど。


# 既に WebProg 板に板違いで投稿してまったけど、見逃して欲しい。 <> Name_Not_Found<>sage<>2019/03/28(木) 14:59:52.08 ID:???.net<> 間に合ってます <> Name_Not_Found<>sage<>2019/03/28(木) 18:22:51.05 ID:???.net<> demo1, demo2 と書かれたリンクをクリックしてみて。
以下からでも見れる:

http://nowsmartsoft.atwebpages.com/demo1/index.html
http://nowsmartsoft.atwebpages.com/demo2/index.html <> Name_Not_Found<>sage<>2019/03/28(木) 18:25:57.30 ID:???.net<> 言葉では分からないと思う。
実際に起動してみると、ブラウザの「中に」Windowが出てくるので
サイズを変更したり、タイトルバーをドラッグしたり、メニュー項目を
クリックしてみたり、その中にある 小さな Window をクリックして
文字を入力したりしてみて欲しい。 <> Name_Not_Found<>sage<>2019/03/28(木) 18:26:25.44 ID:???.net<> 間に合ってますんで… <> Name_Not_Found<>sage<>2019/03/28(木) 18:29:57.91 ID:???.net<> アクセス解析でわかるんだが、いまだ、誰一人もまともに起動してみて無いんだよ。
一度は見てから決めてくれよ。 <> Name_Not_Found<>sage<>2019/03/28(木) 19:08:24.06 ID:???.net<> >>475
バカにしないでマーケティング少しは勉強しなよ。
適切な商品を、適切な顧客に。
あなたがやってるのは真夏のプールでコタツの押し売り。
そりゃ開かれないよ。 <> Name_Not_Found<>sage<>2019/03/28(木) 19:15:39.79 ID:???.net<> >>476
そういうことか・・・。
オイラにはそういうことは理解しにくいのかも知れない。 <> Name_Not_Found<><>2019/03/28(木) 19:21:31.80 ID:zC5VHeSC.net<> >>470>>475
んじゃ評価するけど・・・
・まず見た目がひどすぎる。使わずに評価するなってお前、こんな見た目で誰が使うんだ
・技術的には素直に凄いと思う
・需要がない。現状、widowsネイティブで作る物が思い浮かばない。ちなみに俺はちょっとしたツールならvbaとVB.NET使ってる
・時期もあまりに遅い。15-20年前なら、フリゲとブラゲ両方同時に作れるって触れ込みでかなり需要があったと思うけど、今はその手のライブラリは山程あるしメインはスマホアプリとsteam。もっと早ければDXライブラリの代わりになれたかも知れない
・そのためにこのツールを使おうって気にはならない事は、説明読めば大体分かるんだけど使ってみても意見が変わらなかった

ツールを作る事自体は悪い事じゃないけど、もう少しコンセプト(どんな物を作るのに向いているか)を考えた方が良いと思う
あと、「使って下さい、お願いします」ぐらいの気持ちで作らないと、ロクでもないものしか出来ないと思う <> Name_Not_Found<>sage<>2019/03/28(木) 19:25:38.23 ID:???.net<> >>478
有難う。色々と参考になる。 <> Name_Not_Found<>sage<>2019/03/28(木) 20:14:48.01 ID:???.net<> >>477
よく頑張ってると思う
最初はいろいろどうかと思ったけど、考え直した

コマンドラインで動くようなものをWASMに移植するのはそう難しくないし、
ゲームのオーサリングツールはいろいろあるけど、
最低限のGUIを持ったツール的なもののための環境は整備されてないから
そういう広い視野で見たら可能性があって目の付け所は良いと思う

だからそういうところを間違わず見失わず続けていけば
必ず評価されるものになると思うよ
逆に少しでも余計なことに拘るとそっぽを向かれる

例えば今の見た目は確かに駄目だが、これを「足りない」と思うと失敗するパターン
むしろ変に拘ってるものを捨てようとして一番重要で地味な部分を着実に整備していったほうがいい
そしてアピールして回るのはいいけど、もし自ずと使ってくれる人がいるなら
その人の声を、見失わない範囲で最も大事にしたほうがいい <> Name_Not_Found<>sage<>2019/03/29(金) 01:09:42.77 ID:???.net<> >>480
ありがとう。 <> Name_Not_Found<>sage<>2019/03/29(金) 09:46:38.41 ID:???.net<> 当たり前かもしれないけど、HTML の textarea 要素って、native OS の
クリップボードからのコピーもペーストもできるんだね。 <> Name_Not_Found<>sage<>2019/03/29(金) 14:09:56.00 ID:???.net<> OS以外のクリップボードがあるの?
リアル机の上に置いてあるやつのこと言ってる? <> Name_Not_Found<><>2019/03/29(金) 14:12:27.43 ID:zaSXTawa.net<> >OS以外のクリップボードがあるの?
ソフト上で実装しようと思えば出来ると思うけど、めんどいからOS丸投げだわな <> Name_Not_Found<>sage<>2019/03/29(金) 14:25:32.11 ID:???.net<> >>483
ブラウザは、「ペースト」の方はセキュリティー上の問題から禁止している
ことが多い。JSからは原則的には、native OSのクリップボードの内容を
paste する事が出来ない。ところが、textarea には出来る。
JSからでも全く出来ないわけではなく、ユーザーが CTRL+V を押した場合
にのみは、textarea 以外でも出来るらしい。イベントが発生した場合に
のみは、他の要素、例えば <p> タグなどでも使えるようになっている。 <> Name_Not_Found<><>2019/03/29(金) 14:46:48.65 ID:zaSXTawa.net<> textareaのペースト知らなかった
でも、何か使えなくなってるっぽい?
https://qiita.com/kwst/items/8d9cd40e181761085325 <> Name_Not_Found<>sage<>2019/03/29(金) 14:54:29.11 ID:???.net<> >>485
1人の私が、参考になった と評価しています <> Name_Not_Found<>sage<>2019/03/29(金) 17:32:57.85 ID:???.net<> >>486
document.execCommand('paste')
は使えなくなってるけど、それとはまた別の問題のはず。

何にもない場合に、JS から関数を呼び出してもペーストは出来ないようになっている。
ところが、ユーザーが CTRL+V キーを押した場合は、<p> タグにさえもペースト
できる方法が有る。<p> タグの attribute に名前は忘れたけど、
xxxx="true" みたいにしておく必要がある。すると、そのタグで、
pasteイベントが発生するようにもなるので、そのイベントを拾えば、
また、いろいろなことが出来るようになる。 <> Name_Not_Found<><>2019/03/29(金) 17:34:22.11 ID:zaSXTawa.net<> >>488
あぁ、そういう事か理解した
>何にもない場合に、JS から関数を呼び出してもペーストは出来ないようになっている。
これが出来ると思って色々触ってたわ <> Name_Not_Found<>sage<>2019/03/29(金) 17:54:29.07 ID:???.net<> こう書くらしい。
但し、<>括弧は半角から全角に変えてある:

<p contenteditable="true" onpaste="myFunction()">Try to paste something inside this paragraph.</p>

<script>
function myFunction() {
alert("You pasted text!");
}
</script> <> Name_Not_Found<>sage<>2019/03/29(金) 17:59:27.31 ID:???.net<> なにもない状態でクリップボード取得できたら完全にセキュリティホール <> Name_Not_Found<>sage<>2019/03/29(金) 18:02:43.51 ID:???.net<> >>490
htmlタグにcontenteditable="true"したらえらいことになったwww <> Name_Not_Found<>sage<>2019/03/29(金) 18:09:11.31 ID:???.net<> そうか、editable になるのはそれはそれで問題だね・・・。 <> Name_Not_Found<>sage<>2019/03/29(金) 18:12:19.69 ID:???.net<> htmlに設定すると、サイトの各要素をdeleteやimgごとコピーしたりできるようになるのか
開発ツール無しでも結構色々出来て面白いなこれ <> Name_Not_Found<>sage<>2019/03/29(金) 20:28:05.34 ID:???.net<> いまさらかよ <> Name_Not_Found<>sage<>2019/03/29(金) 21:11:16.85 ID:???.net<> >>493
今だとnavigator.clipboard.readText()で取得できる
execCommandなんかはオワコン <> Name_Not_Found<>sage<>2019/03/29(金) 23:21:45.86 ID:???.net<> >>494
googleのVisBug拡張機能じゃダメか? <> Name_Not_Found<><>2019/03/30(土) 01:39:18.06 ID:+uiLpP+A.net<> onloadイベントでajax使うとポップアップブロックされるんだけど
ページロード時にデータベースの項目とかどうやって表示するの? <> Name_Not_Found<>sage<>2019/03/30(土) 01:54:51.64 ID:???.net<> ポップアップとajaxは特に関係がない機能なので、
何か変なコード書いてる気がする <> Name_Not_Found<>sage<>2019/03/30(土) 01:56:25.63 ID:???.net<> コードを見せて欲しい  <> Name_Not_Found<><>2019/03/30(土) 02:16:37.65 ID:+uiLpP+A.net<> 指摘の通りべつのところでした

let Hoge = function(){};
Hoge .prototype.open= () => {};
Hoge .prototype.run = () => {
 let self = this;
 window.addEventListener("DOMContentLoaded", ()=>{
  self.open();
 });
};

これでself = windowと見なされてwindow.open()してたもよう <> Name_Not_Found<><>2019/03/30(土) 02:28:11.29 ID:+uiLpP+A.net<> Ajaxが原因というのは完全に先入観だったみたい

let Hoge = function(){};
Hoge .prototype.run = () => { console.log(this); } // 1
new Hoge().run();
Hoge .prototype.run = function() { console.log(this); } // 2
new Hoge().run();

下だとthis = Hogeでいいんだけど上だと何故かthis = Window
アロー演算子の使い方が間違っているのかも <> Name_Not_Found<>sage<>2019/03/30(土) 02:33:01.85 ID:???.net<> >>502
>>330辺りからアロー関数のthisについて話があるから読んでみて
俺もアロー関数は苦手で、いつも無名関数にしてる

Hoge .prototype.run = function() { console.log(this); } // 1
とかどうだろう。試す気力もないぐらい眠い。今日は、寝る。後は誰か頼んだ・・・ <> Name_Not_Found<>sage<>2019/03/30(土) 05:53:03.31 ID:???.net<> class構文にしちゃえよ <> Name_Not_Found<>sage<>2019/03/30(土) 08:07:32.69 ID:???.net<> アロー関数がわからない <> Name_Not_Found<>sage<>2019/03/30(土) 17:51:11.16 ID:???.net<> >>505
関数宣言のfunctionを省いて
()と{}の間に=>を書く書式にしたものだよ

自分より上のスコープのthisが貫通するのが従来のfunctionとの違い <> Name_Not_Found<>sage<>2019/03/30(土) 21:41:52.17 ID:???.net<> >>505
高階関数を簡単に書くためのものだよ

高階関数っていうのは関数を引数に取る関数
コールバックを引数にするとほぼ同等

var array1 = [1, 4, 9, 16];
var map1 = array1.map(function(x) {
 return x * 2
});

長ったらしいだろ?
これをこう書ける。

var map1 = array1.map(x => x * 2);

こう書くことで、単に短く書けるだけでなく
「関数が呼ばれる」という感じから「式を渡す」感じになるだろ?
さらに関数っぽく見えないのでthisも呼び出し元のthisを
そのまま参照するという感じが素直に受け入れられる

たまに関数の改良型だと思ってなんでもアロー関数にするやつがいるけど
高階関数用の引数だと思ったほうが良いよ <> Name_Not_Found<>sage<>2019/03/30(土) 22:01:07.62 ID:???.net<> 無理にアロー関数を?使う必要はない
以上 <> Name_Not_Found<>sage<>2019/03/30(土) 22:22:04.33 ID:???.net<> 無理にでも使え
以上 <> Name_Not_Found<>sage<>2019/03/30(土) 22:27:05.71 ID:???.net<> 適材適所じゃよ
今は分からんでも一度使っておけば良い <> Name_Not_Found<>sage<>2019/03/30(土) 22:52:11.48 ID:???.net<> >>507
恥ずかしくないの? <> Name_Not_Found<>sage<>2019/03/30(土) 23:11:55.84 ID:???.net<> パンツじゃないから。 <> Name_Not_Found<>sage<>2019/03/31(日) 00:05:18.16 ID:???.net<> JavaScript のthis は、文脈によって、Global(window) を指す事があるから、ややこしい

TypeScript は、これを踏襲しているけど、
Haxe, jQuery は、this の意味を変えている <> Name_Not_Found<>sage<>2019/03/31(日) 00:08:52.83 ID:???.net<> jQueryの$(this)を組み合わせるという手もあるのか <> Name_Not_Found<>sage<>2019/03/31(日) 00:11:40.91 ID:???.net<> >>513
jQがそうしたことが
ピュアJS知らない世代の中に
thisの理解を間違う層を一定数生んでいる、気がする <> Name_Not_Found<>sage<>2019/03/31(日) 00:19:31.59 ID:???.net<> 間違いなくあると思う <> Name_Not_Found<>sage<>2019/03/31(日) 00:43:31.01 ID:???.net<> >>513
> jQuery は、this の意味を変えている

変えてないよ。jQueryはDOMの仕様準拠だから
DOMのthisと同じ意味になってる <> Name_Not_Found<>sage<>2019/03/31(日) 00:54:22.01 ID:???.net<> DOMのthisの話だったよね。
ほいこれ。これがDOMのthisでjQueryはDOM標準に準拠してる。

https://jsfiddle.net/ub0rh3fo/

document.getElementById('id').addEventListener('click', function() {
this.classList.toggle('on');
},false); <> Name_Not_Found<>sage<>2019/03/31(日) 00:55:37.48 ID:???.net<> つまり、jQueryが悪いんじゃなくて、DOMが悪いんか <> Name_Not_Found<>sage<>2019/03/31(日) 00:57:54.81 ID:???.net<> 一番ハマるのは、setTimeoutだろう。これもDOMだが
「Global(window) を指す事があるから、ややこしい」=setTimeoutぐらいしか
思いつかないんだが。あとは似たようなsetIntervalか。 <> Name_Not_Found<>sage<>2019/03/31(日) 02:06:21.24 ID:???.net<> immediate省くな <> Name_Not_Found<>sage<>2019/03/31(日) 10:32:14.09 ID:???.net<> >>511はどういう意味? <> Name_Not_Found<>sage<>2019/03/31(日) 10:35:47.98 ID:???.net<> >>517
変えてるよ
eachとかmapとかfilterとか、いくらでもあるよね <> Name_Not_Found<>sage<>2019/03/31(日) 10:41:49.12 ID:???.net<> thisがややこしい?
thisは関数が呼ばれるときに決まる第0の引数のようなものなんだから
呼ばれ方によって呼ぶ方の取り決めによって如何様な値も取りうることは当然だし
ドット演算子と関数呼び出しを組み合わせるとレシーバが来るという基本はあるけれど
別にthisはそれだけのために存在してるものではないし
変な固定観念を捨てて簡単に考えれば何も難しくないと思うけどな <> Name_Not_Found<>sage<>2019/03/31(日) 13:02:05.48 ID:???.net<> chrome ver73 64bit使ってるけどimport/exportがSyntax Errorになる
まだ未実装ということでwebpackだかbabelだかソース変換ツールが必要なのかな <> Name_Not_Found<>sage<>2019/03/31(日) 13:05:18.20 ID:???.net<> 「○○難しい」って人に「全然難しくないよ!」って返す人は教える才能ない
とはいえ悪いことでもないので、人に教えるなんて無駄なことせずにガシガシコード書いてればいい。 <> Name_Not_Found<>sage<>2019/03/31(日) 13:10:02.59 ID:???.net<> >>523
const array = [1, 2, 3, 4,5];

array.forEach(function() {
console.log(this); // Windowと表示される。
});

いま、thisが「Global(window) を指す事があるから、ややこしい」
って話でしたよね? <> Name_Not_Found<>sage<>2019/03/31(日) 13:10:45.45 ID:???.net<> ↑を見れば分かるように、
JavaScript標準自体がややこしいんだよね。 <> Name_Not_Found<>sage<>2019/03/31(日) 13:15:54.69 ID:???.net<> document.getElementById('id').addEventListener('click', function() {
  const array = [1, 2, 3];

  console.log(this); // ここのthisはDOM Element

  array.forEach(function() {
    console.log(this); // ここのthisはWindow
  });
}, false);

このように、thisが変わるのがややこしいって話でしょ?
jQueryとか関係ないよ。 <> Name_Not_Found<>sage<>2019/03/31(日) 13:20:39.12 ID:???.net<> ちなみに、jQueryのeach使って、thisを変えたくなければ
アロー関数を使えばいい。これもJavaScript標準と同じ

$('#id').on('click', function() {
  const array = [1, 2, 3];

  console.log(this); // ここのthisはDOM Element
  $.each(array, () => console.log(this)); // ここのthisもDOM Element
}); <> Name_Not_Found<>sage<>2019/03/31(日) 13:28:58.89 ID:???.net<> ハイパー大雑把に言えば
thisはクラスのメンバ関数でクラス自体を参照するものだったじゃん? <> Name_Not_Found<>sage<>2019/03/31(日) 13:40:04.88 ID:???.net<> >>531
「俺の知っている言語では」という言葉が抜けてるよ <> Name_Not_Found<>sage<>2019/03/31(日) 13:50:56.28 ID:???.net<> 全てはJavaやC++のthisの説明がダメダメなんだよ。


class Hoge {
 private String str = 'hoge';
 public void foo() {
  System.out.println(this.str); // ×間違い thisはクラスのインスタンス自身です
 }
}

Hoge hoge = new Hoge();
hoge.foo()

○ 正解 thisとはfooメソッドを呼んだ時の.の左側のことです。


と正しく説明していれば、JavaScriptも同じだってわかるのに <> Name_Not_Found<>sage<>2019/03/31(日) 14:39:11.10 ID:???.net<> >>527
jQueryはthis値を変えてるって話だったよね?
forEachとeachのthis値を比較してみ <> Name_Not_Found<>sage<>2019/03/31(日) 14:55:05.05 ID:???.net<> >>534
そもそもthisを変えない。ということはありえないよ

document.getElementById('id').addEventListener('click', function() {
  const array = [1, 2, 3];

  console.log(this); // ここのthisはDOM Element

  array.forEach(function() {
    console.log(this); // ここのthisはWindow ← 【thisが変わってしまっている】
  });
}, false); <> Name_Not_Found<>sage<>2019/03/31(日) 15:16:10.62 ID:???.net<> >>535
君の個人的な「あり得ない」の話はしていない
jQueryがthis値を変えているのは事実 <> Name_Not_Found<>sage<>2019/03/31(日) 15:29:04.93 ID:???.net<> >>536
その言い方だとjQueryがthisを変えてるのが悪いように見えるけど、
実際にはJavaScriptだってthisを変えているし、
むしろjQueryは正しい方向にthisを修正しているってことだろう? <> Name_Not_Found<>sage<>2019/03/31(日) 17:09:44.81 ID:???.net<> >>537
君が勝手に「良い」「悪い」の話しにすり替えているだけ
元々は>>513でしょ? <> Name_Not_Found<>sage<>2019/03/31(日) 17:23:16.55 ID:???.net<> >>517 変えてないよ。
 ↓
>>535 そもそもthisを変えない。ということはありえないよ

??? <> Name_Not_Found<>sage<>2019/03/31(日) 17:39:05.90 ID:???.net<> jQuery君は相変わらず、主張が矛盾だらけですね <> Name_Not_Found<>sage<>2019/03/31(日) 17:44:24.52 ID:???.net<> >>526
教える才能もクソもないよ
JSの細かな仕様を覚えろと説明してもしょうがないでしょ
だから変な固定観念を捨てて柔軟に捉えろと言ってる
thisが難しいのではなくて難しく考えてるだけ
そしてそこを柔軟に捉えるのが難しいってだけで
最初から第0引数と思ってれば何にも難しくない
そこが難しくなってしまってるのはもう仕方のないことだから頑張れとしか言えん
何か詳しく知りたいのなら聞いてくれれば具体的に細かく教えるが
細かく聞いてそれで理解できる人は自分で調べられる
だからとりあえず固定観念を捨てろとしか言えん <> Name_Not_Found<>sage<>2019/03/31(日) 18:29:44.25 ID:???.net<> キモイ <> Name_Not_Found<>sage<>2019/03/31(日) 18:53:41.17 ID:???.net<> >>539
それ俺が言ったんじゃないんですけどw

>>540
俺は最初からjQueryは優れているという話をしてる。
jQueryがthisを変えているならば、それはその方が優れているからだ。

現に混乱の理由となっているthisがWindowとなるのは
JavaScript標準の話だっただろ <> 520<>sage<>2019/03/31(日) 18:59:59.96 ID:???.net<> >>543
自分は初めからjQueryの良し悪しなんて話してないんだけど
関係ないなら初めから関わってこないでよ <> Name_Not_Found<>sage<>2019/03/31(日) 19:02:47.80 ID:???.net<> 俺ははじめからjQueryの方が良いという話をしている。 <> Name_Not_Found<>sage<>2019/03/31(日) 19:10:31.71 ID:???.net<> >>535
何か少し勘違いしてね?

addEventListenerは第二引数に渡される関数を
DOM要素にバインドするメソッドなんだから
thisがイベントターゲットになるのは当たり前

forEachは引数に渡された関数を繰り返すだけなんだから
何にもバインドされてない関数のthisがグローバルになるのも当たり前よ <> Name_Not_Found<>sage<>2019/03/31(日) 19:18:20.73 ID:???.net<> jQueryやprototype.jsがバズる前夜
JSとAS界隈で、即席に閉じたスコープを作るのに

(function(){
})();

をほいほい書いちゃう宗教が出来て
それがループに適用されると

for(var i=0 ; i<配列.length ; i++)(function(index,item){
})(i, 配列[i]);

みたいな形になって、ここでcallやapplyを使って
thisを配列[i]にしちゃう宗派も出来た

その系譜がjQueryだったんだな <> 520<>sage<>2019/03/31(日) 19:23:31.97 ID:???.net<> >>545
では、>>523にレスしたのが間違いだね <> Name_Not_Found<>sage<>2019/03/31(日) 19:32:24.88 ID:???.net<> >>546
何か少し勘違いしてね?
イベントリスナーのthisArgがターゲット要素になるのは
ただ仕様でわざわざそうするように決まってるからで
何の自然で当然な動作でもなんでもないぞ <> Name_Not_Found<>sage<>2019/03/31(日) 20:12:51.07 ID:???.net<> >>547
へー面白い <> Name_Not_Found<>sage<>2019/03/31(日) 20:44:13.06 ID:???.net<> >>546
何か少し勘違いしてね?

> addEventListenerは第二引数に渡される関数を
> DOM要素にバインドするメソッドなんだから

その理屈だと、jQueryもDOM要素にバインドするメソッドなんだから
thisがイベントターゲットになるのは当たり前

> forEachは引数に渡された関数を繰り返すだけなんだから
> 何にもバインドされてない関数のthisがグローバルになるのも当たり前よ

だからってthisを変えたらダメでしょ
JavaScript のthis は、文脈によって、Global(window) を指す事があるから、ややこしい <> Name_Not_Found<>sage<>2019/03/31(日) 20:53:45.79 ID:???.net<> $('.hoge').each(function(i, elem) {
console.log(elem);
});
を、
$('.hoge').each(function() {
console.log(this);
});
と書けるのは、jQueryがelemをthisにバインドしてるからでしょ。
アロー関数使ってこれは無理。
$('.hoge').each(() => {
console.log(this);
});

つまりjQueryバカ君は「this変えられるfunction最高!アローはクソ!」って言いたいんだねw <> Name_Not_Found<>sage<>2019/03/31(日) 21:03:38.59 ID:???.net<> >>552
アロー関数を使う場合はこうな。

$('.hoge').each((i, elem) => console.log(elem));

ってか、アロー関数はthisをバインドしないんだから
引数でやるしか無いでしょ?jQueryの問題じゃないよ。
アロー関数使う以上、thisは関数の外のものが使われる <> Name_Not_Found<>sage<>2019/03/31(日) 21:05:11.90 ID:???.net<> jQueryはもちろんアロー関数と組み合わせて便利に使えます(当たり前) <> Name_Not_Found<>sage<>2019/03/31(日) 21:19:31.52 ID:???.net<> jQueryバカ君の主張まとめ:

アロー関数で書く
$('.hoge').each((i, elem) => {
console.log(elem);
});
は、functionでも同じく
$('.hoge').each(function(i, elem) {
console.log(elem);
});
と書ける。
しかしjQueryはわざわざelemをthisにバインドして
$('.hoge').each(function() {
console.log(this);
});
と書けるようにしている。
これは全く無駄なことである。
つまりjQueryは必要もないのにthis変えるアホである。
そうではなく
$('.hoge').each(function() {
console.log(this);
});
と書けることに価値があるのであれば、
$('.hoge').each(() => {
console.log(this);
});
と書けないアロー関数はクソということになってしまうからだ。

…と、こういうことか… <> Name_Not_Found<>sage<>2019/03/31(日) 21:21:12.05 ID:???.net<> >>555
ぜんぜん違うよw <> Name_Not_Found<>sage<>2019/03/31(日) 21:25:19.40 ID:???.net<> >>551
変わってないよ
ただのfunctionなんだからグローバルになるのは仕様通りだし自然じゃん

何から何に変わったと主張しているの? <> Name_Not_Found<>sage<>2019/03/31(日) 21:26:41.89 ID:???.net<> >>557
DOM ElementからWindowに変わった
これがややこしいって話をしてる

document.getElementById('id').addEventListener('click', function() {
  const array = [1, 2, 3];

  console.log(this); // ここのthisはDOM Element

  array.forEach(function() {
    console.log(this); // ここのthisはWindow ← 【thisが変わってしまっている】
  });
}, false); <> Name_Not_Found<>sage<>2019/03/31(日) 21:33:17.64 ID:???.net<> これも例の一つ。thisがクラス自身を指していない。

class Foo {
 constructor(){
  this.value = 100;
 }
 foo() {
  console.log(this.value); // 100と表示される
  var ar = [1, 2, 3];
  ar.forEach(function() {
   console.log(this.value); // エラーになる
  })
 }
}

var f = new Foo();
f.foo(); <> Name_Not_Found<>sage<>2019/03/31(日) 21:36:03.76 ID:???.net<> しかも>>559の場合、forEachの中のthisはundefined。
Global(Window)じゃない。
使い方によってthisがコロコロ変わる <> Name_Not_Found<>sage<>2019/03/31(日) 21:38:01.10 ID:???.net<> >>558
ああわかった、何がわかってないのかが

thisは関数を実行した時に
その関数がメンバとなるオブジェクトの参照になるんよ

んで、何のメンバでもない関数はどのスコープで作られようと
グローバルのメンバ扱いになる

して、addEventListenerもforEachも
引数に渡されてる何のメンバでもないただの無名関数は
本来ならthisの参照先はグローバルになる

ただaddEventListenerは引数の関数をDOM要素にバインドする関数だから
バインド先のDOM要素がthisになるってだけ

thisってのは関数スコープを上から下に貫通するただの変数ではなくて
関数ごとに持ってるキーワードなんよ

だから変わってるのではなくて
addEventListenerの引数関数のthisと
forEachの引数関数のthisは
もともと別のものなんだよ <> Name_Not_Found<>sage<>2019/03/31(日) 21:42:45.57 ID:???.net<> >>561
> ただaddEventListenerは引数の関数をDOM要素にバインドする関数だから
> バインド先のDOM要素がthisになるってだけ

じゃあ。

my.foo(function() {
 // ここのthisはなんになる?
}

関数ごとにバラバラじゃないですか?

関数ごとにバラバラであっていいっていうのが、
JavaScriptの正しい仕様なんですか? <> Name_Not_Found<>sage<>2019/03/31(日) 21:59:47.95 ID:???.net<> >>562
バラバラじゃないって
何のメンバでもない、どのオブジェクトのメソッドでもない関数で
thisキーワードが参照されたときは一律グローバル

そもそもthisってのは関数がオブジェクトのメソッドとして実行されたとき
そのオブジェクトを参照するキーワードなんよ
参照すべきオブジェクトがないからグローバルにしてる <> Name_Not_Found<>sage<>2019/03/31(日) 22:06:19.78 ID:???.net<> function foo(){ return this; }

foo();

var bar = {
foo: foo
};

bar.foo();

こうしてみればわかりやすかろう
そうでもない? <> Name_Not_Found<>sage<>2019/03/31(日) 22:21:54.26 ID:???.net<> >>563補足
strictモードだと
thisで返るのはグローバルではなくundefinedになる

いずれにせよ、メソッドとして実行されていないので
参照されても返すものがねえって意味で

>>564補足
function foo(){}

は関数文

var foo = function(){};
bar.forEach(function(){});

は関数リテラル
なんで正確にはちょっと違うんだけど、まあ捨て置け <> Name_Not_Found<>sage<>2019/03/31(日) 22:24:15.51 ID:???.net<> >>562
コールバック関数がthis束縛するはずない
一度、コードを書いてみろ <> Name_Not_Found<><>2019/03/31(日) 22:37:34.12 ID:rWRvnw+C.net<> >>561
>んで、何のメンバでもない関数はどのスコープで作られようと
>グローバルのメンバ扱いになる

これはちょっと乱暴w <> Name_Not_Found<><>2019/03/31(日) 22:37:49.34 ID:rWRvnw+C.net<> だった <> Name_Not_Found<>sage<>2019/04/01(月) 00:21:49.34 ID:???.net<> >>561
> ただaddEventListenerは引数の関数をDOM要素にバインドする関数だから
> バインド先のDOM要素がthisになるってだけ

それは理屈にあわない。

element.onclick = function() { }
これなら、イベントハンドラを呼び出す時、
element.onclick() と実行するから、イベントハンドラの中では
this = element だって納得できるが、

addEventListenerの場合はイベントハンドラを複数登録できるわけで、
何かしらの配列に入れてるはず。

function addEventLister(type, handler) {
 this.handlers.push({type, handler}) ;
}
みたいな感じで。そしてイベントハンドラを呼び出す時は

for(var handler in this.handlers) {
 handler();
}
もしくは、handlersがただの配列ではなくてオブジェクトでこんな風になってるとか
this.handlers.call_all_handler();

そうするとイベントハンドラの中のthisは、globalかundefinedかhandlersになるはずだ。
イベントハンドラはDOM要素に直接バインドされていない。 <> Name_Not_Found<>sage<>2019/04/01(月) 00:23:56.82 ID:???.net<> ようするに、DOM要素にaddEventListenerで登録した
イベントハンドラの中でthisがDOM要素になっているのは、

DOM要素が複数のイベントハンドラを呼び出す時に
わざわざthisをDOM要素に変更して呼び出しているはずだ <> Name_Not_Found<>sage<>2019/04/01(月) 00:29:02.24 ID:???.net<> >>566
そりゃそうよ。コールバック関数自体はどのオブジェクトにも
紐付いてないのだからthis束縛はされていない

addEventListerとかは、わざわざ自分の要素が
thisになるようにしてからコールバック関数を呼び出している。 <> Name_Not_Found<>sage<>2019/04/01(月) 00:55:47.10 ID:???.net<> 関数をネストすると、内側のthis が、window になってしまう

漏れは、そういう認識です <> Name_Not_Found<><>2019/04/01(月) 01:30:33.76 ID:Io+GUhRr.net<> >>569
callとかapplyとか知らんの? <> Name_Not_Found<>sage<>2019/04/01(月) 01:44:17.16 ID:???.net<> >>573
知ってるよ?addEventListenerは
callとかapplyを使って、関数を呼び出す時に
thisを変更してから呼び出してるよねって話をしてる <> Name_Not_Found<>sage<>2019/04/01(月) 06:07:30.29 ID:???.net<> グローバルのメンバ云々は全く関係なくて
thisArgがundefinedのときsloppy modeではglobalThisに置き換えられてただけ <> Name_Not_Found<>sage<>2019/04/01(月) 06:41:07.52 ID:???.net<> >>571
jQuery君がそれを理解してくれれば解決なんだがね <> 568<>sage<>2019/04/01(月) 08:10:47.92 ID:???.net<> >>576
俺がそのjQuery君なわけだがw <> Name_Not_Found<>sage<>2019/04/01(月) 11:02:31.57 ID:???.net<> >>574
アホか
バインドするメソッドなんだからそうするに決まっとろうが <> Name_Not_Found<>sage<>2019/04/01(月) 12:30:27.39 ID:???.net<> >>577
>>535もお前なら、>>571と矛盾してる <> Name_Not_Found<>sage<>2019/04/01(月) 13:01:46.00 ID:???.net<> >>578
> バインドするメソッドなんだからそうするに決まっとろうが

バインドするメソッドとは?
それはどういう意味で、
どこにそういう仕様であると書いてあるんですか? <> Name_Not_Found<>sage<>2019/04/01(月) 14:38:53.39 ID:???.net<> 変なの湧いてるなあ
なんか名前書いてよ
興味のある人は読むし
ない人はNGすっから <> Name_Not_Found<>sage<>2019/04/01(月) 14:52:34.84 ID:???.net<> まずは言い出しっぺが名前を書くように <> Name_Not_Found<>sage<>2019/04/01(月) 15:18:31.39 ID:???.net<> 自覚あってワロタ <> Name_Not_Found<>sage<>2019/04/01(月) 15:19:53.04 ID:???.net<> じゃなくて名前。はよ <> Name_Not_Found<>sage<>2019/04/01(月) 15:38:30.56 ID:???.net<> "バインドするメソッド" で検索しても何も見つからんわ
むしろ一番最初にjQueryでてきた
オレオレ用語使ってないで、ちゃんと説明しろ <> Name_Not_Found<><>2019/04/01(月) 18:56:34.87 ID:WoIas1Og.net<> https://qiita.com/kan_dai/items/b1850750b883f83b9bee
このサイトに載っているカレンダーを勉強してるんですが、
calendarHtml += '<h1>' + year + '/' + month + '</h1>'
calendarHtml += '<table>'
ソースを見ると上記のように、変数を上書きしています。
前の値を保持して、新しい値を追加してると考えていいのでしょうか?
このあともfor文で、<tr>や<td>もcalenderHtmlに代入されていってます。
上書きすると前の値が消えて、新しい値に上書きされると思ってたんですが。 <> Name_Not_Found<>sage<>2019/04/01(月) 19:36:34.49 ID:???.net<> 加算代入演算子
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators#Addition_assignment <> Name_Not_Found<><>2019/04/01(月) 20:27:20.84 ID:WoIas1Og.net<> >>587
リンクありがとうございます
解決しました。 <> Name_Not_Found<>sage<>2019/04/01(月) 20:41:20.75 ID:???.net<> >>535が敗れたか <> Name_Not_Found<>sage<>2019/04/01(月) 21:51:05.16 ID:???.net<> バインドするメソッドってなに? <> Name_Not_Found<>sage<>2019/04/01(月) 21:58:59.79 ID:???.net<> jQuery君は言葉狩りで話を逸らそうと必死だな <> Name_Not_Found<>sage<>2019/04/01(月) 23:04:20.22 ID:???.net<> 言葉狩りじゃないなぁ

理由が「バインドするメソッドなんだから」って
書いてるんだから、その理由の意味を聞いてるわけ。

それが答えられないなら、理由がないってことになる。 <> Name_Not_Found<>sage<>2019/04/01(月) 23:08:44.94 ID:???.net<> 偉そうなことは>>548>>579に反論出来てからいおうな <> Name_Not_Found<>sage<>2019/04/02(火) 01:14:19.26 ID:???.net<> >>592
他意は無いんだが
質問者が未解決のままレス続ける時は
名前欄に最初の質問のレス番号入れてくれんかね
文脈わからなくなるし
混ざって他の質問者が流されたりしちゃうこともあるから

あんまり口うるさくするのもアレなんだけど
マナーっつうか
みんなで使う掲示板なんで、ちょっとした気遣いみたいなもんで <> Name_Not_Found<>sage<>2019/04/02(火) 01:58:53.89 ID:???.net<> bind で、this を固定するのだろ <> Name_Not_Found<>sage<>2019/04/02(火) 05:36:12.19 ID:???.net<> おそらくaddEventListenerは要素に関数を紐付ける(バインド)のだから
レシーバー(→this)が要素オブジェクトになると言いたかったんだろうが
紐付けてるからそうなってるのではなくて
紐づけてる風でもあるし、便利だからそうされてたのが
デファクトとして今仕様になってると考えたほうが良いと思う
何れにせよthisをどうしようが自由でそこに言語の縛りはないのだから <> Name_Not_Found<>sage<>2019/04/02(火) 08:45:37.87 ID:???.net<> いやjavascriptはthisをどうしようが勝手な言語だが他の一般的なクラスベースの言語はそんな自由じゃないだろ <> Name_Not_Found<>sage<>2019/04/02(火) 10:34:08.65 ID:???.net<> >>596
うん、でもaddEventListenerは複数指定できるから
要素に直接紐づけてるわけじゃないんだよね。

便利だからわざわざthisを要素自身にして呼び出してる
便利だから。jQueryも同じ。便利だからそうしている。 <> Name_Not_Found<>sage<>2019/04/02(火) 12:31:14.19 ID:???.net<> つまり、
$('.hoge').each(function(i, elem) {
console.log(elem);
});
を、
$('.hoge').each(function() {
console.log(this);
});
と書けるようにしてるから便利という意見ですよね。
つまり、
$('.hoge').each((i, elem) => {
console.log(elem);
});
としか書けない、
$('.hoge').each(() => {
console.log(this);
});
とは書けないアロー関数はクソ、thisを自由に変えられるfunction最高という意見ですねw <> Name_Not_Found<>sage<>2019/04/02(火) 12:42:52.91 ID:???.net<> >>599
thisが変わってほしい時は、function、
thisを変えたくない時は、アロー関数
使い分ければ良いんだよ

所でさ、
1. thisが要素になる・・・使いやすくするため
2. thisが変わらない(つまりアロー関数)・・・関数の外のthisを使える

この2つにメリットが有るのは分かるんだが

3. thisがGlobal(Window)に変わる。(ただし"use strict"の場合はundefined)

この仕様にメリットってなにかある? <> Name_Not_Found<>sage<>2019/04/02(火) 12:48:28.74 ID:???.net<> じゃあ他人にできることができないことがある
お前はクソということだな <> Name_Not_Found<>sage<>2019/04/02(火) 21:21:24.17 ID:???.net<> >>600
昔はthisは(他のクラスベース言語だとインスタンスを表すのでそれに習って)
オブジェクトでないといけないという縛りがあったので
undefinedのときは仕方がないのでglobalThisに置き換えられてただけ

ES5になってその制限を緩くして
strict modeだとthisがプリミティブになることができるようになった <> Name_Not_Found<>sage<>2019/04/02(火) 22:19:18.56 ID:???.net<> javascript人気だけど仕様がクソすぎるよな <> Name_Not_Found<>sage<>2019/04/02(火) 22:26:07.77 ID:???.net<> いや。客観的に見てクソ加減は著名な言語の中で平均以下だよ <> Name_Not_Found<>sage<>2019/04/02(火) 22:44:24.58 ID:???.net<> JSで未だに問題になり得る隠しきれない残念な部分ってtypeof演算子くらいでしょ <> Name_Not_Found<>sage<>2019/04/02(火) 23:02:49.98 ID:???.net<> >>602
うん。それはそれでいいんだけど、
JavaScriptのforEachでthisがundefinedもしくはwindowになる(strictかどうかで挙動が変わる)
という仕様は何が便利なのかなーって話 <> Name_Not_Found<>sage<>2019/04/02(火) 23:35:05.59 ID:???.net<> >>606
人の話聞いてる?
forEachなんかでのthisValueは当然メソッド呼び出しでもないんだしundefinedでしょ
ただsloppy modeだとundefinedがglobalThisに置き換えられるってだけ
置き換えられる理由は前述の通り <> Name_Not_Found<>sage<>2019/04/02(火) 23:46:04.80 ID:???.net<> >>606
返すものがないから

歴史的な問題でもあるから
詳細は90年代からESに至るまで仕様書順に読んできて
ここでこんなに引っ張るような話でもねえよ
仕様なんだから <> Name_Not_Found<>sage<>2019/04/02(火) 23:53:56.37 ID:???.net<> ん?ただ一言、forEachでundefinedになってることに
メリットはないって言ってくれれば良いんだけど? <> Name_Not_Found<>sage<>2019/04/03(水) 01:29:23.51 ID:???.net<> >>609
foreachにアロー関数渡す理由が無い
foreachには無名関数渡せば良いだけで、
変な事してる人に配慮して言語仕様を貶める事は俺には出来ないな <> Name_Not_Found<>sage<>2019/04/03(水) 06:24:40.86 ID:???.net<> >>609
お前言ってることがおかしいよ
undefined以外だったらおかしくてむしろデメリットになり得るでしょ
thisは何にでも使えるとはいえ「THIS」なのだから
ライブラリやらが何をどうしようと勝手だが標準には秩序というものがある <> Name_Not_Found<>sage<>2019/04/03(水) 06:53:42.50 ID:???.net<> こいつ第10引数は何故いつも開いてるんだ!
undefinedの代わりに何か便利なものを提供しろ!
とか言いそうだな <> Name_Not_Found<>sage<>2019/04/03(水) 09:31:07.53 ID:???.net<> >>611
> undefined以外だったらおかしくてむしろデメリットになり得るでしょ
どんなデメリット?

> thisは何にでも使えるとはいえ「THIS」なのだから
forEachの中では、必ず undefined (またはWindow)になるんです。
「THISなのだから」とはどういう意味? <> Name_Not_Found<>sage<>2019/04/03(水) 09:32:02.44 ID:???.net<> >>612
便利なものが思いつかないなら、何も提供しなくて良いのでは? <> Name_Not_Found<>sage<>2019/04/03(水) 11:59:54.22 ID:???.net<> やっぱjavascriptの仕様がおかしい
おかしくなかったら揉めない <> Name_Not_Found<>sage<>2019/04/03(水) 12:39:21.11 ID:???.net<> >>613
必ずなるなんて誰も言ってないでしょ
forEachやmapは第二引数で指定できるでしょ
コールバックのthisが何になるかなんてJSの秩序では自明でないでしょ
それに利便性も含めて指定できるようになってるんだから
指定されていない時はundefinedが自然でしょ
それが嫌なら指定すればいいだけなのだから <> Name_Not_Found<>sage<>2019/04/03(水) 13:10:19.03 ID:???.net<> > 指定されていない時はundefinedが自然でしょ

いいえ、コールバックのthisが何になるかなんてJSの秩序では自明ではありません。 <> Name_Not_Found<>sage<>2019/04/03(水) 13:24:50.00 ID:???.net<> まあ呼び出しが側が自由に設定出来るからな。jQueryがそうしてるように。
※ただしアロー関数は除くww <> Name_Not_Found<>sage<>2019/04/03(水) 14:34:05.92 ID:???.net<> >>615
なんかおかしいことあるか? <> Name_Not_Found<>sage<>2019/04/03(水) 14:42:05.30 ID:???.net<> >>615
あと揉めてるっていうか
変な人が居着いちゃってるだけのような気が… <> Name_Not_Found<>sage<>2019/04/03(水) 14:46:24.68 ID:???.net<> >>617
自明じゃね?
何かのオブジェクトのメソッドとして実行されないから
thisキーワードを参照しても返すべきオブジェクトがないわけで <> Name_Not_Found<>sage<>2019/04/03(水) 15:03:32.42 ID:???.net<> >>621
だからそのクラスベース脳捨てろよ。
hoge(function() {console.log(this);});
//=> undefined
が自明だって?バカいうな。
hogeの定義はこうだ!
function hoge(cb) {cb.bind('うんこ')();}
だから、
//=> undefined
じゃなくて、
//=> うんこ
なんだよこのうんこ!
jQueryだってやってることは同じだバカ! <> Name_Not_Found<>sage<>2019/04/03(水) 15:04:39.23 ID:???.net<> >>622
日本語でok <> Name_Not_Found<>sage<>2019/04/03(水) 15:19:00.20 ID:???.net<> >>621
> 何かのオブジェクトのメソッドとして実行されないから
> thisキーワードを参照しても返すべきオブジェクトがないわけで

その理屈だと、DOMのイベントは、
DOM要素オブジェクトのメソッドとして実行されないから
undefinedになるべきなんですよ。 <> Name_Not_Found<>sage<>2019/04/03(水) 15:22:50.44 ID:???.net<> そろそろまとめてくれないか <> Name_Not_Found<>sage<>2019/04/03(水) 15:22:52.93 ID:???.net<> >>617
お前足りん子か?
デフォルト値がない限り引数に指定できるものを指定してない=undefinedと扱われるのはJSの秩序だろうが <> Name_Not_Found<>sage<>2019/04/03(水) 15:24:00.52 ID:???.net<> >>624
DOMはあくまでDOMで外様の仕様だから
そこには別のルールがある <> Name_Not_Found<>sage<>2019/04/03(水) 15:26:05.17 ID:???.net<> >>626
お前の言う「JSの秩序」によると

element.addEventListener('click', function() {
// ここのthis は
}, false) ;

undefinedとして扱われるべきということになってしまう <> Name_Not_Found<>sage<>2019/04/03(水) 15:48:03.08 ID:???.net<> jQueryはあくまでDOM用のライブラリだから
DOMの仕様に準拠している。と考えればいいのか <> Name_Not_Found<>sage<>2019/04/03(水) 16:06:48.43 ID:???.net<> なんにも分かってないのな
恥ずかしい奴 <> Name_Not_Found<>sage<>2019/04/03(水) 16:11:54.15 ID:???.net<> 自称わかってる君、登場。何も言えずに、退場。 <> Name_Not_Found<>sage<>2019/04/03(水) 17:14:50.60 ID:???.net<> >>628
ん?
addEventListenerが特別な振る舞いするってだけじゃね?
なぜ特例を挙げる? <> Name_Not_Found<><>2019/04/03(水) 17:20:17.27 ID:3PPhuC92.net<> もう質問じゃねーじゃん
言語の仕様と歴史の問題だから
仕様書読んでよ
http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf <> Name_Not_Found<>sage<>2019/04/03(水) 18:08:36.79 ID:???.net<> >>628
一つ上くらい読め
足りん子 <> Name_Not_Found<>sage<>2019/04/03(水) 18:10:26.05 ID:???.net<> JavaScriptのforEachでthisを要素にする方法ないのかな? <> Name_Not_Found<>sage<>2019/04/03(水) 18:54:20.51 ID:???.net<> 今日書かれた内容くらいは読んでから書こうぜ <> Name_Not_Found<>sage<>2019/04/03(水) 19:02:49.56 ID:???.net<> >>635
これでええやろ。
Array.prototype.forEach2 = function(cb) {
this.forEach((v, i, a) => { cb.bind(v)(v, i, a); });
};
コールバックにはfunctionつかうんやで?
アローはthis変えさせてくれへんいけずやからな。
[5, 4, 3].forEach2(function() { console.log(this); });
5
4
3 <> Name_Not_Found<>sage<>2019/04/03(水) 19:21:12.75 ID:???.net<> >>635
[5, 4, 3].forEach(Map.call, function() { console.log(this); });
5
4
3 <> Name_Not_Found<>sage<>2019/04/03(水) 19:41:10.96 ID:???.net<> >>637は分かるけど
>>638がまったく分からない…
バカにも分かるよう解説してほしい <> Name_Not_Found<>sage<>2019/04/03(水) 20:03:03.80 ID:???.net<> forEachの第二引数はthisの指定だって既出じゃん <> Name_Not_Found<>sage<>2019/04/03(水) 20:20:48.57 ID:???.net<> それだけじゃ>>638は全然分かんないんだけと…
バカ舐めてない? <> Name_Not_Found<><>2019/04/03(水) 20:44:42.80 ID:3PPhuC92.net<> >>641
まずMap.callが何かググってみると良いと思う
Mapオブジェクト便利だよ <> Name_Not_Found<><>2019/04/03(水) 20:51:38.49 ID:DDwik/cB.net<> 分からないときは変数を解決しつつステップを追っていったらいいだけでは?
fn = function() { console.log(this); }
[5, 4, 3].forEach(Map.call,fn);

Map.call.call( fn, 5 ); Map.call.call( fn, 4 ); Map.call.call( fn, 3 )


Map.call.call( fn, 5 );

Map.__proto__.call.call( fn, 5 )

(Function.prototype.call).call( fn, 5 )

(fn.__proto__.call).call( 5 )

fn.call( 5 )

∵o.m(x) ≡ (o.m).call( o, x ) ⇐ ( o.__proto__.m ).call( o, x ) <> Name_Not_Found<>sage<>2019/04/03(水) 21:19:54.11 ID:???.net<> >>640
> forEachの第二引数はthisの指定だって既出じゃん

だから、その第二引数でどうやって、各要素がthisとなるように
指定するんですか?って話なんですが <> Name_Not_Found<>sage<>2019/04/03(水) 22:09:35.97 ID:???.net<> >>644
どうやってって指定するのかって
>>638が例出してるじゃん <> Name_Not_Found<><>2019/04/03(水) 22:10:37.53 ID:3PPhuC92.net<> >>644
>>643さんが丁寧に説明してくれてるじゃないか
callが連続するのが分かりづらいかも知れんけど
落ち着いて一個ずつ読んでみ <> Name_Not_Found<>sage<>2019/04/03(水) 22:42:42.04 ID:???.net<> 読んだ結果俺は>>637でいいや…
>>638だと読み直すたびに毎回そこで引っ掛かる自信あるw <> Name_Not_Found<><>2019/04/03(水) 23:25:13.34 ID:Ed8aFiP/.net<> すみません、ちょっと質問なのですが、javascriptはスタックサイズの変更は出来ないのでしょうか?
再帰関数を実装したらスタックが溢れてしまいます。スタックサイズを設定出来るコンパイラオプションみたいなものはないのでしょうか? <> Name_Not_Found<>sage<>2019/04/03(水) 23:46:27.85 ID:???.net<> スタックサイズを無限にでもしたいのか?
無限に必要だろ。お前のコードは。 <> Name_Not_Found<>sage<>2019/04/04(木) 00:19:20.05 ID:???.net<> >>649
わからんのなら黙っとけ <> Name_Not_Found<>sage<>2019/04/04(木) 00:23:21.44 ID:???.net<> 使用上末尾呼び出しでスタックは消費しない
それでも溢れるのはエンジンの実装がまだだから
各エンジンにスタックサイズ指定のオプションがある

>>647
普通はそこまで無理くりthisを使おうとしないほうが
よっぽどいくらでもスマートに書く方法があるから
なぜ第一引数で与えられるものをわざわざthisを使おうとする
考え直したほうがいい <> Name_Not_Found<>sage<>2019/04/04(木) 00:36:39.01 ID:???.net<> × 使用上末尾呼び出しでスタックは消費しない
○ 末尾最適化が可能なように書いた場合に限り、末尾においてスタックは消費しないだけで
末尾以外でスタックは消費するし、末尾最適化が可能じゃない書き方をしていれば、それもスタック消費する
最初からループで書けばすむものを、再帰で書いてコンパイラにループに戻してくれることを期待するという無駄なことをしている。 <> Name_Not_Found<>sage<>2019/04/04(木) 00:54:37.99 ID:???.net<> >>652
最後の意見は超同意。再帰が話題になるたび思う。 <> Name_Not_Found<>sage<>2019/04/04(木) 00:56:50.91 ID:???.net<> >>651
jQueryディスw
thisだけにwwなんちゃってwww <> Name_Not_Found<>sage<>2019/04/04(木) 06:58:14.10 ID:???.net<> Aでやりたいんだという人にそんなの無理無理Bでやれというのは老害だと思う
本当に不可能なことをしようというのであればそれは不毛だよと教えてあげないといけないが
エンジンの設定などで動き得る範囲なら
書きたいように書けるように設定するほうが正しい判断だと思う
今の時代人間が機械に合わせるより機械を人間に合わせるほうが絶対に良いことで
JSなんてエンジンが頑張ってくれるおかげでいろいろ好きなように楽に書けてる言語の代表なのだから <> Name_Not_Found<>sage<>2019/04/04(木) 07:17:15.02 ID:???.net<> それは手段を目的にしちゃってるのでは? <> Name_Not_Found<>sage<>2019/04/04(木) 07:27:49.42 ID:???.net<> 一人で仕事するならどうかいたって自由 <> Name_Not_Found<>sage<>2019/04/04(木) 10:41:05.79 ID:???.net<> >>655
むしろ今は人が機械に合わせた方が恩恵大きそうな気が <> Name_Not_Found<>sage<>2019/04/04(木) 12:35:25.19 ID:???.net<> 第一引数でとれるものを、彼はなぜthis束縛に拘ってるの?

array.forEach(v=>console.log(v));

これでいいじゃん
this束縛したら通常の動作ではなくて直感的じゃないし、第二引数でthis束縛する場合に改修コストが余計にかかるし、メリットがまるでない
つーか、ループ処理でthisで束縛してるのはjQueryだけだし、それが当然としたり顔でいわれても困るわ <> Name_Not_Found<>sage<>2019/04/04(木) 12:48:02.04 ID:???.net<> jQueryからそれが当たり前のように始めると危ないよと様々な人が様々に言ってきた害が現実に起きてるだけとは言え
それでもforEachに一々躓くのは異常としか言えないね <> Name_Not_Found<>sage<>2019/04/04(木) 13:16:57.26 ID:???.net<> >>658
だと思う
それにバグも少なく見通しがよくなる
FWの設計を無視して無理矢理色々やろうとすると歪が出てくる <> Name_Not_Found<>sage<>2019/04/04(木) 14:24:07.26 ID:???.net<> >>660
> jQueryからそれが当たり前のように始めると危ないよと様々な人が様々に言ってきた害が現実に起きてるだけとは言え

なんか害起きてるか?
お前が害害いってるだけだろう? <> Name_Not_Found<>sage<>2019/04/04(木) 15:18:51.12 ID:???.net<> jQueryのデザインが、絶対!
javascriptのforEachは、間違っている! <> Name_Not_Found<><>2019/04/04(木) 15:55:22.62 ID:l5iaeRCP.net<> >>663
でどうしろと <> Name_Not_Found<>sage<>2019/04/04(木) 17:57:59.73 ID:???.net<> >>663
そんなことを言ってるのはお前だけ

DOMが要素をthisに変更してるように
jQueryも要素をthisにしてるだけのこと <> Name_Not_Found<>sage<>2019/04/04(木) 18:37:03.60 ID:???.net<> >>665
addEventListenerとforEachは全く違う <> Name_Not_Found<><>2019/04/04(木) 18:48:39.01 ID:l5iaeRCP.net<> >>666
で俺らにどうしろと
JSの仕様に文句があるならECMAに言ってよ <> Name_Not_Found<>sage<>2019/04/04(木) 19:16:52.41 ID:???.net<> >>665
jQueryも全く違う。thisをどうするかは設計者が決めること <> Name_Not_Found<>sage<>2019/04/04(木) 19:17:11.00 ID:???.net<> 訂正 >>668>>666あて <> Name_Not_Found<>sage<>2019/04/04(木) 19:27:20.92 ID:???.net<> >>662
お前もうレスしてくるな
これまでの話の流れのニュアンスを理解できないというのならよくいるただのアスペだが
お前は1レス中の隣接する行すら関連付けて理解できないのだから
そんなAI以下の知能でよく今まで生きてこれたな <> Name_Not_Found<>sage<>2019/04/04(木) 19:30:25.51 ID:???.net<> >>670
お前が、存在しない「害」をある前提にして洗脳しようとするからだろ
「害」なんて無いんだよ。有るならどんな「害」か書けるはずだが。
それともお前は、これが正しいんだ!とかいうお前の思い込みを主張するつもりか?w <> 663<><>2019/04/04(木) 19:41:56.15 ID:vTBEFf7i.net<> >>667
俺も同意見だから、異論はない
彼はjQueryの仕様がECMAにないのはおかしいという論調だったからな

>>668
全くその通り
jQueryの仕様をESに持ってくるなと
そもそも、NodeList#forEachでもthis値を書き換えてないわけで、addEventListener云々は採用する理由にもならん <> Name_Not_Found<>sage<>2019/04/04(木) 19:51:29.10 ID:???.net<> foreachのindex仕えばいいだけの話が、何でこんなにこじれるのか意味不明 <> Name_Not_Found<>sage<>2019/04/04(木) 19:51:38.67 ID:???.net<> >>671
お前頭湧いてるのか?
jQuery流にドップリ浸かったせいでJSの基礎構文に違和感を感じて
無理やりにでもthisを活用しようとすることが害でなくてなんなんだ?

正しいとか正しくないとか誰も言ってないことを思い込むのも辞めてくれ
もしかしてjQueryを否定してると思ってるのかもしれないがそれも違う
表があれば裏があるという当たり前で自明なことを言ってるだけ

それを受け入れられないというのならただの病気
お前と話すことはない <> Name_Not_Found<>sage<>2019/04/04(木) 19:53:38.50 ID:???.net<> >>673
第二引数(index)を使わずとも、第一引数(値)で参照出来るぞ? <> Name_Not_Found<>sage<>2019/04/04(木) 19:57:25.62 ID:???.net<> >>675
スマン、普通に間違えた
もちろんvalueねw <> Name_Not_Found<>sage<>2019/04/04(木) 20:01:37.35 ID:???.net<> こういうのを想像して、新人さんかわいいなぁと思ってしまった

arr = [1,2,3];
arr.forEach(function(i){
console.log(arr[i-1]);
}) <> Name_Not_Found<>sage<>2019/04/04(木) 20:03:34.26 ID:???.net<> 俺なら新人でもそんなコードを書く奴は見込み0と判断する <> Name_Not_Found<>sage<>2019/04/04(木) 20:11:45.82 ID:???.net<> >>677のコードを考え出した人は、>>677である(笑) <> Name_Not_Found<>sage<>2019/04/04(木) 20:13:14.02 ID:???.net<> >>677
引数の位置的に、jQuery脳も疑う <> Name_Not_Found<>sage<>2019/04/04(木) 20:17:07.79 ID:???.net<> >>674
> jQuery流にドップリ浸かったせいでJSの基礎構文に違和感を感じて

ん?誰が違和感を感じてるんだ? 逆だろう。
jQueryが憎くて憎くて、jQueryの構文に違和感を感じてるのはお前だろう。
自覚ないんだろうけどなw

JSの基礎構文(?)なら、jQueryにも採用されてるんで、
違和感を感じるはずがないんだよ。
あ、そっちのやり方ね。で終わる話だから

$.each([1, 2, 3], function(index, value) {
 console.log(value); // 1, 2, 3 と表示される
}); <> Name_Not_Found<>sage<>2019/04/04(木) 20:20:19.15 ID:???.net<> jQuery脳・・・jQueryもJSのやり方もありです。だってjQueryはJSだもの
アンチjQuery脳・・・jQuery脳のやつはjQueryが絶対だって思ってるはずだ!

これな <> Name_Not_Found<>sage<>2019/04/04(木) 20:24:20.92 ID:???.net<> js vs jQuery ファイッ! → jQueryでも大差ない → アンチjQuery沈黙
ワンライナーで戦争終わらせたぞ <> Name_Not_Found<>sage<>2019/04/04(木) 20:37:07.43 ID:???.net<> jQuery IE
同じような存在
未来には不要 <> Name_Not_Found<>sage<>2019/04/04(木) 20:38:14.93 ID:???.net<> >>681
棲み分けの話なら、jQuery流はjQueryの世界で好きにやればいい
標準APIにjQueryの流儀を持ってくるな、という話 <> Name_Not_Found<>sage<>2019/04/04(木) 20:39:24.77 ID:???.net<> ○○はオワコン

本当にオワコンになるのは、開発元がやめたときで
他人が言ってるだけ(=オワコンなってほしい、なってくれー)が
現実のものになることはないのです。COBOLとかね。 <> Name_Not_Found<>sage<>2019/04/04(木) 20:39:55.51 ID:???.net<> >>685
アンチjQuery脳・・・標準APIにjQueryの流儀を持ってこようとしているはずだ! <> Name_Not_Found<>sage<>2019/04/04(木) 20:55:33.34 ID:???.net<> ならアロー関数を使わないべき論はやめて欲しいね <> Name_Not_Found<>sage<>2019/04/04(木) 20:59:29.45 ID:???.net<> アロー関数を使わないなんて誰が言ってるんだ?
むしろjQueryとも組み合わせて使っていんだが?

↓に書いてあるとおり

551 自分:Name_Not_Found[sage] 投稿日:2019/03/31(日) 21:05:11.90 ID:???
jQueryはもちろんアロー関数と組み合わせて便利に使えます(当たり前) <> Name_Not_Found<>sage<>2019/04/04(木) 21:00:10.86 ID:???.net<> アンチjQuery脳・・・jQuery脳のやつはアロー関数を使わないべきだって思ってるはずだ!

ほんと、これだよなw <> Name_Not_Found<>sage<>2019/04/04(木) 21:05:26.74 ID:???.net<> >>687
では、逆に聞くが、>>535はそういう奴ではないのか? <> Name_Not_Found<>sage<>2019/04/04(木) 21:07:26.66 ID:???.net<> >>691
ぜんぜん違うだろw <> Name_Not_Found<>sage<>2019/04/04(木) 21:15:05.48 ID:???.net<> geolocation APIの位置情報が偽装されているかを検出したいのですが。 <> Name_Not_Found<>sage<>2019/04/04(木) 21:29:46.76 ID:???.net<> ストーキングすれば簡単だろ <> Name_Not_Found<>sage<>2019/04/04(木) 21:32:08.32 ID:???.net<> >>692
なぜ? <> Name_Not_Found<>sage<>2019/04/04(木) 21:38:41.67 ID:???.net<> 無理だろ
iphoneは知らんけどドロは好き放題変えられる <> Name_Not_Found<>sage<>2019/04/04(木) 22:08:18.94 ID:???.net<> >>695
標準APIにjQueryの流儀を持ってこようとしてないから <> Name_Not_Found<>sage<>2019/04/04(木) 23:13:26.33 ID:???.net<> >>686
COBOLがオワコンになってないと思う方がヤバイ
VBは勿論、PascalやFortranですらオワコンでなくなってしまう <> Name_Not_Found<>sage<>2019/04/04(木) 23:18:25.39 ID:???.net<> それらはもう十分に萎みきって一部分野だけで残り滓が生き残ってる段階だからオワコンとは言わんでしょ
まだまだ活力はあるけど今まさに萎みだしてる段階をオワコンと言うと思う <> Name_Not_Found<>sage<>2019/04/04(木) 23:19:02.61 ID:???.net<> >>693
そういうのはディープラーニングでできる <> Name_Not_Found<>sage<>2019/04/04(木) 23:20:39.89 ID:???.net<> >>700
出来るわけねーだろハゲ <> Name_Not_Found<>sage<>2019/04/04(木) 23:25:15.01 ID:???.net<> >>698
俺なんて、1件だけ変わった客いて
今でも月に1回くらいActionScript書いてるんだぜ
すごくね? <> Name_Not_Found<>sage<>2019/04/04(木) 23:29:34.91 ID:???.net<> flashとかの環境もうどっか行ったな
案件来るんだろうか <> 699<>sage<>2019/04/04(木) 23:33:24.29 ID:???.net<> >>703
まーないでしょう
そもそもブラウザもデフォでは実行できなくなってきてるし
これ、俺と客以外、誰が見るんだろう…って思いながら作業するんだぜ <> Name_Not_Found<>sage<>2019/04/04(木) 23:38:07.70 ID:???.net<> 標準技術の上に作られたjQueryが使われなくなることはないのだった <> Name_Not_Found<>sage<>2019/04/05(金) 05:43:28.18 ID:???.net<> >>701
できるよ
パターンを判別するのは得意 <> Name_Not_Found<>sage<>2019/04/05(金) 06:42:16.26 ID:???.net<> >>697
Array#forEachでthisが変わらないとおかしいという論調には読めないのかね? <> Name_Not_Found<>sage<>2019/04/05(金) 06:52:19.89 ID:???.net<> そいつ脳足りんだから読めないよ
ほっとけ <> Name_Not_Found<>sage<>2019/04/05(金) 06:55:38.66 ID:???.net<> >>707
意味不明。なんでそうなるんだかw
そのコードはforEachでthisが変わるという例だろうが <> Name_Not_Found<>sage<>2019/04/05(金) 06:56:43.46 ID:???.net<> >>706
パターンを判別するのが得意であって
位置情報の偽造を判別できてるわけじゃないですね <> Name_Not_Found<>sage<>2019/04/05(金) 07:13:40.21 ID:???.net<> >>710
最近は少ないサンプルでも学習できるようになってるから
最初幾らか人力も使ってサンプルを用意して
運用しながら人間が判別しつつサンプルを増やしていけばいいんだよ

「偽装」っていうのはそういうものだから
もしかすると端末のGPSの精度がおかしいから外部アタッチメントと
アプリ使ってAndroidの位置情報置き換えてるかもしれないけど
そういうのは「偽装」とは言えないしね <> Name_Not_Found<>sage<>2019/04/05(金) 08:28:33.22 ID:???.net<> >>709
ああ、「アロー関数の動きを期待している」といいたいのか?
どちらにしても、「ここのthisはWindow ← 【thisが変わってしまっている】」といっている時点で標準APIに文句付けているようだが

そもそも、>>534の質問に対して>>535は的外れだったな <> Name_Not_Found<>sage<>2019/04/05(金) 08:51:54.08 ID:???.net<> >>711

ドロの位置偽装はアプリ使うぞ <> Name_Not_Found<>sage<>2019/04/05(金) 19:46:37.51 ID:???.net<> >>713
だから仮に端末のGPSモジュールをバイパスしてるかどうかが分かったとしても
それで「偽装」が分かるわけではない
「偽装」っていうのはヒューリスティックに判断するしか無いということ <> Name_Not_Found<>sage<>2019/04/05(金) 20:01:23.37 ID:???.net<> >>714
以前はそうだったけど
最近はディープラーニング的な解析が出来るようになって
位置情報のような社会行動学的偽装はわりと見破りやすくなった

って話じゃね? <> Name_Not_Found<>sage<>2019/04/05(金) 20:03:48.29 ID:???.net<> それをうまく逆手に取れば自然な位置偽装工作も可能だろう <> Name_Not_Found<>sage<>2019/04/06(土) 00:15:23.15 ID:???.net<> あちこちのサイトで見かけるpopper.js って何をしているのでしょう? <> Name_Not_Found<>sage<>2019/04/06(土) 00:17:26.32 ID:???.net<> そのくらい調べろボケ <> Name_Not_Found<>sage<>2019/04/06(土) 00:33:43.84 ID:???.net<> >>718
調べて分からないのです 観察上はBootstrap使う時につきものみたいですが <> Name_Not_Found<>sage<>2019/04/06(土) 06:52:54.05 ID:???.net<> 移動してるとセルラーやWifiの電波状況、方位や加速度センサーの値が変化する <> Name_Not_Found<>sage<>2019/04/06(土) 07:12:03.07 ID:???.net<> >>719
>>1
JavaScript を自ら学ぶ人のための質問スレッドです。 <> Name_Not_Found<>sage<>2019/04/06(土) 07:18:51.27 ID:???.net<> popper.jsぐぐっても分からない?
ならプログラミングの適性ないから止めてけ <> Name_Not_Found<>sage<>2019/04/06(土) 10:53:44.12 ID:???.net<> ProgateのJavaScript終わったんだけど次何すればいいんだろ
https://youtu.be/RKcFIg1yHOI
↑こういうの真似しようとおもったけどどうなんだろ <> Name_Not_Found<>sage<>2019/04/06(土) 14:57:17.08 ID:???.net<> 昔作ったサイトからPopper.jsを外しても動作変わらんかったw <> Name_Not_Found<>sage<>2019/04/06(土) 16:53:59.55 ID:???.net<> 設計とかのことを考えたら結構その動画はヤバい気がするけどどうなんだろ <> Name_Not_Found<>sage<>2019/04/06(土) 18:11:57.01 ID:???.net<> どうなんだろって質問なんだろうか?どうなんだろ <> Name_Not_Found<>sage<>2019/04/06(土) 18:31:43.36 ID:???.net<> RPGなんて恐れ多い物に手を出そうとする奴は
間違いなく将来強い拘り持って孤立するへんくうな奴だけど
JS仙人になれる資格を有する
そういう奴は多少変な教え方されようがされまいが
すぐに自分の心理へとたどり着けるので問題はない <> Name_Not_Found<>sage<>2019/04/06(土) 18:32:18.94 ID:???.net<> 心理→真理 ね <> Name_Not_Found<>sage<>2019/04/07(日) 11:31:02.53 ID:???.net<> JavaScriptで共有の値渡しだの参照の渡しだのいろいろ言われてるのは結局どういうことなのですか? <> Name_Not_Found<>sage<>2019/04/07(日) 12:08:31.05 ID:???.net<> なにが? <> Name_Not_Found<>sage<>2019/04/07(日) 22:57:21.90 ID:???.net<> >>729
単一存在にいろんな場所からいろんな名前が付けられていくイメージをするといいよ <> Name_Not_Found<>sage<>2019/04/08(月) 22:22:10.02 ID:???.net<> <div id="wrap">
 <canvas id="canvas-1" width="640" height="480"></canvas>
 <canvas id="canvas-2" width="640" height="480"></canvas>
 <canvas id="canvas-3" width="640" height="480"></canvas>
</div>

canvasをabsoluteで重ねてレイヤー化。
各々単独レイヤーのみでのtoDataURL()でpng/jpeg化。
var d = data:image/png;base64,・・・
ここまではできてます。
複数の、例えば#canvas-1と#canvas-2を結合したdを得るにはどうしたらいいでしょうか?
または複数のdを結合してあたかも1層のようにさせる関数やライブラリなどありますか?
OSやブラウザは最新のものに対応してればいいです。お願いします。 <> Name_Not_Found<>sage<>2019/04/09(火) 00:09:33.21 ID:???.net<> 「canvas 画像 合成」で検索すれば? <> Name_Not_Found<>sage<>2019/04/09(火) 00:22:04.60 ID:???.net<> 個人的にはcanvas一個にまとめたほうが楽で軽い気がする <> Name_Not_Found<>sage<>2019/04/09(火) 06:16:41.96 ID:???.net<> OffscreenCanvasをいくつも持っておいて1つのCanvasにputImageでいいじゃん <> Name_Not_Found<>sage<>2019/04/09(火) 17:28:10.05 ID:???.net<> javascriptってブラウザを使ってローカルで開くだけで動作するるですか? <> Name_Not_Found<>sage<>2019/04/09(火) 18:07:06.32 ID:???.net<> はい <> Name_Not_Found<>sage<>2019/04/09(火) 18:07:27.93 ID:???.net<> webページ右クリック名前をつけて保存→開いてみたらええで <> Name_Not_Found<>sage<>2019/04/09(火) 22:26:33.63 ID:???.net<> >>735
すみません、もうちょっと詳しくお願いします <> Name_Not_Found<>sage<>2019/04/09(火) 22:32:57.53 ID:???.net<> canvasって裏側でレイヤー複数持つ事できないの?
合わせてダブルバッファリングみたいにして一括描画、みたいな <> Name_Not_Found<>sage<>2019/04/10(水) 04:34:15.00 ID:???.net<> すぐ上に方法書いてあるじゃん <> Name_Not_Found<>sage<>2019/04/10(水) 05:24:18.22 ID:???.net<> canvas には、Win32 API の、BitBlt() みたいな、
転送元から転送先へのブロックコピー機能は、無いの?

ダブルバッファリングみたいに、一旦、裏側のバッファへ、
幾つかのシーンを合成して描いておいてから、ディスプレイに切り替えるような

>>736
実行環境はブラウザ・Node.js の2つがある

ブラウザのコンソール画面で、コード片を実行するか、
VSCode, Node.js をインストールしておいて、VSCodeからNode.jsで実行するか <> Name_Not_Found<>sage<>2019/04/10(水) 06:52:30.97 ID:???.net<> 見えないCanvas好きなだけ用意して好きなだけdrawImageで合成して見えるCanvasにdrawImageすればいいじゃん
上品にOffscreenCanvasとcommit()でやってもいいし <> Name_Not_Found<>sage<>2019/04/10(水) 10:08:26.03 ID:???.net<> >>742
>canvas には、Win32 API の、BitBlt() みたいな、
>転送元から転送先へのブロックコピー機能は、無いの?
>ダブルバッファリングみたいに、一旦、裏側のバッファへ、
>幾つかのシーンを合成して描いておいてから、ディスプレイに切り替えるような

あるよ。
http://nowsmartsoft.atwebpages.com/demo1/index.html
の Caret Blink で、それやってる。
Caret の下の canvas 画像を読み込んで、RGB データの色を
反転してから、danvas に過去戻すみたいなこと。

canvas は、back surface みたいなものも持てる。 <> Name_Not_Found<>sage<>2019/04/10(水) 10:18:34.24 ID:???.net<> 誤:反転してから、danvas に過去戻すみたいなこと。
正:反転してから、canvas に描き戻すみたいなこと。

確か、 var canvas = document.createElement("canvas") みたいにすれば、
back surface 的な canvas を作れる。例えば、
appendChild(canvas)
としない限りは、画面に表示されることは無い。 <> Name_Not_Found<>sage<>2019/04/10(水) 11:08:23.10 ID:???.net<> それとこないだ追加されたオフスクリーンキャンバスってのはどういうところが違うの? <> Name_Not_Found<>sage<>2019/04/10(水) 11:33:10.42 ID:???.net<> >>746
同じハズ。 <> Name_Not_Found<>sage<>2019/04/10(水) 13:21:37.78 ID:???.net<> >>747
知らないなら黙っているということができないのか

オフスクリーンキャンバスを使った
JavaScriptのマルチスレッド描画
- スムーズなユーザー操作実現の切り札
https://ics.media/entry/19043/

> OffscreenCanvasはWeb Workers(ウェブワーカーズ)を使用してWorkerスレッドで描画処理を行える機能です。
負荷の高い描画処理をWorkerスレッドに移動することで、メインスレッドの負担が軽くなり、余裕ができます。
これによりメインスレッドでスムーズなユーザー操作を実現できるようになり、ユーザー体験の向上が期待できます。

> OffscreenCanvasの使用方法
> メインスレッドでDOMから取得したCanvas要素に対し、transferControlToOffscreen()メソッドを呼ぶことでOffscreenCanvasオブジェクトを取得できます。
このOffscreenCanvasオブジェクトのコンテキストに対して行った描画命令は自動的にもとのCanvas要素に反映されます。
OffscreenCanvasオブジェクトをWorkerに転送し、描画を行います。 <> Name_Not_Found<>sage<>2019/04/10(水) 14:05:57.84 ID:???.net<> >>748
それで、どこが違うんですか?

BitBltとどこが違うか聞いてるんじゃないよ?
>>746の「それ」とどこが違うのかを聞いてる。 <> Name_Not_Found<>sage<>2019/04/10(水) 14:20:38.90 ID:???.net<> >>748
あー、そういえば、そんなの聞いたことがある。
ただ、マルチスレッドで高速化しようとする技術だと思うので、
マルチスレッドへの対応が微妙な段階にある WebAssembly では
使えるかどうかはやってみないと分からないかも。 <> Name_Not_Found<>sage<>2019/04/10(水) 14:25:24.38 ID:???.net<> >BitBltとどこが違うか聞いてるんじゃないよ?
> >>746の「それ」とどこが違うのかを聞いてる。
マルチスレッドで出来るかどうかだと思う。
WebWorkerというのは、MainThreadとは別のスレッドで起動するプログラムで、
「OffscreenCanvas」というものは、そのスレッドを使って、MainThreadとは
別のCPUコアで描画しよう、というものだと思う。
高速化や、レスポンスのよさ(?)の追求に使うのかな。

でもたしか、OffscreenCanvas自体が新しい仕様なので、まだ、使えない
環境の人が多すぎて、使うのには速すぎるんじゃなかろうか。確か。 <> Name_Not_Found<>sage<>2019/04/10(水) 14:27:30.65 ID:???.net<> https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas#Browser_compatibility

まだ、Safari が対応してないので、iPhone、iPad、Mac では使ってもらいにくい
と思う。 <> Name_Not_Found<>sage<>2019/04/10(水) 17:57:49.53 ID:???.net<> Magnific Pop Up
Owl Carousel

2つセットで使われていることが多い。
この時それぞれどんな動作しているのかいまだにわからない。 <> Name_Not_Found<>sage<>2019/04/10(水) 18:54:30.16 ID:???.net<> owlってかなり古いぞ <> Name_Not_Found<>sage<>2019/04/10(水) 20:26:00.82 ID:???.net<> >>750
今のWebには「off-the-main-thread」って言葉があるんだよ
高速化云々ではなく、メインスレッドでやる必要の無いことは別のスレッドでやろうという
勿論理由もあるけど、「Extensible Web」のような原理主義ポリシー

OffscreenCanvasはそうした使い方もできるし、単純にcreateElement('canvas')で仮の要素を作るという
ちょっと気持ち悪さをなくすためだけにも使える <> Name_Not_Found<>sage<>2019/04/10(水) 20:50:55.69 ID:???.net<> >>734
なんのためのレイヤーなのか <> Name_Not_Found<>sage<>2019/04/10(水) 21:28:34.85 ID:???.net<> >>755
ほう。今時は何が流行りですか? <> Name_Not_Found<>sage<>2019/04/10(水) 22:37:01.44 ID:???.net<> OffscreenCanvasなんぞ使わなくても
ゲームしか想定してないのか
CADのレイヤーを想定したらいいし元からそういう話 <> Name_Not_Found<>sage<>2019/04/11(木) 06:14:48.12 ID:???.net<> OffscreenCanvasなんぞってOffscreenCanvasは別に大層なもんじゃないぞ
レイヤー用途でも普通に気軽に使えるもの <> Name_Not_Found<>sage<>2019/04/11(木) 08:48:37.32 ID:???.net<> ではセーラーマーズのコスプレで踏みつけて欲しい。 <> Name_Not_Found<>sage<>2019/04/11(木) 10:07:49.46 ID:???.net<> 複数のCanvasを結合し、1つの画像として保存したい
https://teratail.com/questions/25283

てのがあったけど、これできる?
最後「;」入れても何も表示されないのだが <> Name_Not_Found<>sage<>2019/04/11(木) 10:34:50.77 ID:???.net<> createImageがonload待たずにimage返しちゃってるからじゃね <> Name_Not_Found<>sage<>2019/04/11(木) 12:47:13.04 ID:???.net<> バカすぎ
わざわざdataURLとか取らなくてもdrawImageには直接Canvas指定できるっつうの <> Name_Not_Found<>sage<>2019/04/11(木) 14:21:10.21 ID:???.net<> ドメインが別だと使えないぞ <> Name_Not_Found<>sage<>2019/04/11(木) 15:56:16.80 ID:???.net<> >>763
ではバカではない実際のコードの見本を
言っておくがその記事の筆者ではない <> Name_Not_Found<>sage<>2019/04/11(木) 18:55:50.18 ID:???.net<> >>765
もしお前が知りたければそれはお前が調べることだから
つうか調べる必要すらない、全部言ってるんだから
その上でただコードを要求するとかお前失礼な奴だな
だから俺は意地でも見本は書かない
何が嬉しくてバカがバカ言って大バカになる手伝いをしないといけないんだ <> Name_Not_Found<>sage<>2019/04/11(木) 19:33:40.95 ID:???.net<> 日本語が変な人がバカバカ言ってて草 <> Name_Not_Found<>sage<>2019/04/11(木) 19:48:41.33 ID:???.net<> >>767
俺がバカと言ってるのは俺の基準によるものだから
お前が俺をどう思おうが関係ないこと <> Name_Not_Found<>sage<>2019/04/11(木) 19:59:05.42 ID:???.net<> なんでこんなにイキり屋が多いのか? <> Name_Not_Found<>sage<>2019/04/11(木) 20:56:12.99 ID:???.net<> 誰か俺のいきり立ったチンポを見てくれ <> Name_Not_Found<>sage<>2019/04/11(木) 21:30:41.08 ID:???.net<> >>769
馬鹿に分かるように説明するのが
すんなりできない馬鹿だから <> Name_Not_Found<>sage<>2019/04/11(木) 22:01:20.05 ID:???.net<> >>769
それだけjsは誰にでも出来る簡単な言語って事なんだ <> 758<>sage<>2019/04/11(木) 22:17:41.26 ID:???.net<> >>762
それだった <> Name_Not_Found<>sage<>2019/04/11(木) 22:29:24.01 ID:???.net<> よくある
canvasは罠が多い <> Name_Not_Found<>sage<>2019/04/11(木) 22:39:18.74 ID:???.net<> canvasの罠ではないしcanvasの罠はDOMなどに比べても相当少ない <> Name_Not_Found<>sage<>2019/04/11(木) 23:03:01.38 ID:???.net<> canvasってあんまり使わないから動作確認がし辛い
俺だけ? <> Name_Not_Found<>sage<>2019/04/11(木) 23:21:15.04 ID:???.net<> webglをスクラッチから思い出しながら100行程度最小限用意するのは面倒だが
2dなんて10行程度でしょ <> Name_Not_Found<>sage<>2019/04/12(金) 09:57:52.15 ID:???.net<> スマホ持ってないんだけど、input タグでの 仮想キーボード(?)を
Chromeで Emulate 出来る?
開発者モードのスマホエミュレートモードで「Nexus 5」モードにして、
Landscape keyboard をチェックしてみると、仮想キーボードの画像自体
は表示できたんだけど、そのボタンをマウスでクリックしても input タグには
文字が入力されない。 <> Name_Not_Found<>sage<>2019/04/12(金) 11:51:41.04 ID:???.net<> エミュレートのinputやselectなど入力に関するものはサッパリダメだ <> Name_Not_Found<>sage<>2019/04/12(金) 12:17:17.64 ID:???.net<> 例えば、Fire 7 タブレットとか、Wifi接続専用(?)のAndroidタブレットを
買った場合、USBケーブルでPCのデータを転送してフォルダやファイルの内容を
見たり出来る? 例えば、html を転送したりとか。
あと、PCで使ってるモデムとかから有線 LAN ケーブルを使っての Web ページ
の閲覧とかも出来るのかな? <> Name_Not_Found<>sage<>2019/04/12(金) 12:28:59.84 ID:???.net<> >>780
何でもできる <> Name_Not_Found<><>2019/04/12(金) 14:19:19.97 ID:cHAK/luG.net<> お金がほしいです。どなたか恵んでくださいませ。
運気が上がり、きっと幸せになります。天国に行けます、多分。 <> Name_Not_Found<>sage<>2019/04/12(金) 16:33:52.55 ID:???.net<> document.createRange();で作れるRangeオブジェクトってどういう時に使うの?
MDN読んでもよく分からんので使ったことある人教えてください。 <> Name_Not_Found<>sage<>2019/04/12(金) 16:52:36.60 ID:???.net<> document.designMode = 'on';
するのと、
htmlタグの属性でcontnteditable="true"
付けるのとの違いはなんでしょう?
編集可能になった後の挙動は同じように見えるのですが。
document.designModeが'off'の状態でhtmlをcontnteditable="true"してもdocument.designModeは'off'のままです。
つまり別の機能?挙動が同じなのに?なぜ1つにしなかったのでしょう?? <> Name_Not_Found<>sage<>2019/04/12(金) 16:53:22.83 ID:???.net<> jsライブラリの表はクソ重いからcanvasがいい <> Name_Not_Found<>sage<>2019/04/12(金) 20:23:40.94 ID:???.net<> >>782
奇遇ですね。
私もお金が欲しいのです。どうか恵んで下さい。
きっと、金運が上がります。 <> Name_Not_Found<>sage<>2019/04/12(金) 21:15:49.18 ID:???.net<> >>781
最初は、Chromeがインストールされて無いらしいんだけど、
Google Play をインストールした後、APKファイルをDLした
らインストールできるの?

PCでAPKファイルをDLしておいて、Fire 7 端末にUSB経由でコピー
してもインストールできるのかな? <> Name_Not_Found<>sage<>2019/04/12(金) 21:48:15.20 ID:???.net<> つうかそういうこねくり回すくらいなら最初から
Huaweiのタブレット買ったほうが良いと思うよ
dtabとか性能そこそこだけど解像度抜群で回覧用タブレットにはベスト
中古1万くらいで売ってるでしょ <> Name_Not_Found<>sage<>2019/04/12(金) 22:38:05.78 ID:???.net<> CDNで読む混む時の

integrity= 

って必要なの? <> Name_Not_Found<>sage<>2019/04/13(土) 00:40:41.66 ID:???.net<> いらない <> Name_Not_Found<>sage<>2019/04/13(土) 20:03:37.26 ID:???.net<> スライドパズルのサンプルはないでしょうか?
いろいろ調べたんですが、動かないものが多くて困ってます
ドットインストールのものは途中から有料のようです <> Name_Not_Found<>sage<>2019/04/13(土) 20:51:25.47 ID:???.net<> >>791
いろいろ調べた?
サンプルなんか腐るほど見つかるが…
これは?
https://github.com/imshubhamsingh/15-puzzle
動いてるぞ
https://15puzzle.netlify.com
現代人とは思えない致命的な検索力のなさだな。そっちの方を何とかした方がいい。マジで。 <> Name_Not_Found<>sage<>2019/04/13(土) 20:55:06.80 ID:???.net<> 生jsのほうがいいならこれとか
https://github.com/diffdiff/15-puzzle
https://blooming-fortress-48092.herokuapp.com 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)
<> Name_Not_Found<>sage<>2019/04/13(土) 22:25:18.31 ID:???.net<> こんなコード入社したばかりの新人が
かけるわけないじゃないですかwww <> Name_Not_Found<>sage<>2019/04/13(土) 23:23:56.25 ID:???.net<> この程度も書けない奴なんて要らねーよ <> Name_Not_Found<>sage<>2019/04/14(日) 01:33:49.99 ID:???.net<> 15パズル作れって言われたら、速攻で著作権ないコードをgithubから探すわ <> Name_Not_Found<>sage<>2019/04/14(日) 03:05:01.94 ID:???.net<> 仕事ならそれでも良いが、課題だったらアウトだぞ
出題した人も探せるわけだから <> Name_Not_Found<>sage<>2019/04/14(日) 03:35:10.51 ID:???.net<> 複雑なコード人の人なりのサンプル見て理解してかけるなら0から作れる力があると思うぞ
特にJSって自由で人のコード理解して真似するの難しいのだから <> Name_Not_Found<>sage<>2019/04/14(日) 05:00:23.25 ID:???.net<> HTML で( 表を使って? )、数字の書いた、16個のセルを作って、
その数字を、jQuery で書き換えていけば、簡単なのでは?

入力は、4つの矢印キーで <> Name_Not_Found<>sage<>2019/04/14(日) 06:16:34.34 ID:???.net<> 絵をバラバラにすることなど考えたらCanvasでやる方が良いと思う <> Name_Not_Found<>sage<>2019/04/14(日) 07:18:40.52 ID:???.net<> >>800
CSSスプライトでもっと簡単にできるだろ <> Name_Not_Found<>sage<>2019/04/14(日) 07:20:43.99 ID:???.net<> 15パズルは「解なし」がありえるんで
それをどうやって判定するか or
「解なし」にならないシャッフルを行うか
が肝だろう <> Name_Not_Found<>sage<>2019/04/14(日) 07:25:35.35 ID:???.net<> godot pythonでやってたんですが、チュートが少なかったのでとりあえずこっちゃきました <> Name_Not_Found<>sage<>2019/04/14(日) 08:30:24.30 ID:???.net<> 絶対に正解にたどり着かない、盤面を判定するのは、難しいから、

最初に、正解の盤面を作って、
そこから10〜20回ほど、ランダムに動かしてから、問題を作る <> Name_Not_Found<>sage<>2019/04/14(日) 10:39:41.21 ID:???.net<> >>792
日本語の説明がないと結局ロジックがよくわからなんだです <> Name_Not_Found<>sage<>2019/04/14(日) 11:33:49.77 ID:???.net<> ドットンストールにあるなら一ヶ月だけ金払って有料動画見まくれればいいんじゃないの <> Name_Not_Found<>sage<>2019/04/14(日) 11:40:14.36 ID:???.net<> これぐらいなら書けたけど、15 パズルは難しい!
jQuery のバージョンは、もっと新しいのがあるかも

<body>
<table id="board">
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
<tr><td>7</td><td>8</td><td></td></tr>
</table>

<script type="text/javascript" src="../jQuery/jquery-3.1.0.js"></script>
<script>
$( document ).ready ( function( ) {
$( 'body' ).keydown ( function( e ) {
switch( e.key ) {
// 32:空白、37:←、38:↑、39:→、40:↓
case " " :
case "ArrowLeft" :
case "ArrowRight" :
case "ArrowUp" :
case "ArrowDown" : console.log( e.key );
}
} )
} );
</script>
</body> <> Name_Not_Found<>sage<>2019/04/14(日) 12:05:14.70 ID:???.net<> >>802
知能が低すぎる・・・ <> Name_Not_Found<>sage<>2019/04/14(日) 12:21:05.23 ID:???.net<> >>807
生のチュートください <> Name_Not_Found<>sage<>2019/04/14(日) 13:04:07.87 ID:???.net<> 他のパズルに変えた方がよい

15 パズルは、ややこし過ぎる! <> Name_Not_Found<>sage<>2019/04/14(日) 17:08:13.37 ID:???.net<> 15パズルってこんなもんか
もっと簡単にできそうだが飽きたのであとよろしく

https://jsfiddle.net/gyj1mo9L/4/ <> Name_Not_Found<>sage<>2019/04/14(日) 17:08:43.83 ID:???.net<> 誰か教えて(´;ω;`) <> Name_Not_Found<>sage<>2019/04/14(日) 17:12:58.47 ID:???.net<> >>804
判定する必要はない
完成状態からランダムに十分な回数動かせばいいだけ <> Name_Not_Found<>sage<>2019/04/14(日) 17:16:48.64 ID:???.net<> >>811
うおすげぇ <> Name_Not_Found<><>2019/04/14(日) 17:21:28.97 ID:c7X3oOAW.net<> >>813
なぜ同じことをレスしたのか <> Name_Not_Found<>sage<>2019/04/14(日) 17:25:08.50 ID:???.net<> >>811
レイアウト崩れるけど、サーバ使わないとだめなん? <> Name_Not_Found<>sage<>2019/04/14(日) 17:30:58.90 ID:???.net<> 概念的なロジック教えてください
それが英語だとわからない <> Name_Not_Found<>sage<>2019/04/14(日) 17:33:21.62 ID:???.net<> >>816
手元ではファイルプロトコルでも壊れないけど
SCSSをCSSにコンパイルしてないとかじゃないの? <> Name_Not_Found<>sage<>2019/04/14(日) 17:56:17.89 ID:???.net<> これだけわかりやすいコードあるのにロジックがわからないってどういう事だ
コードに全て書いてあるじゃないか <> Name_Not_Found<>sage<>2019/04/14(日) 18:05:58.78 ID:???.net<> >>818
どうも
SCSSッテ物があることを初めて知りました

>>819
パズル製作がはじめてのど初心者なので、、、 <> Name_Not_Found<>sage<>2019/04/14(日) 18:19:09.32 ID:???.net<> >>819
わからんのなら黙っとけ <> Name_Not_Found<><>2019/04/14(日) 18:30:31.66 ID:yoZEsvZb.net<> https://pastebin.com/mxadnK5i

SCSSをCSSにして、JSにコメントもつけた
あとは自分でやれ <> Name_Not_Found<>sage<>2019/04/14(日) 18:41:58.82 ID:???.net<> js.jsみたいなファイル名はエラーの原因になりますか?
正常に読み込めなかったです
>>822
ありがとぅございますぅ <> Name_Not_Found<>sage<>2019/04/14(日) 18:41:59.79 ID:???.net<> wikipediaに日本語でアルゴリズム書いてあるだろ… <> Name_Not_Found<>sage<>2019/04/14(日) 18:56:23.49 ID:???.net<> >>822
神! <> Name_Not_Found<>sage<>2019/04/14(日) 19:23:55.06 ID:???.net<> ごくまれにホントにデキる人が来るから2ちゃんねるって侮れない <> Name_Not_Found<>sage<>2019/04/14(日) 19:39:58.67 ID:???.net<> >>823
ファイル名に意味が無いのは避けたほうが良い
main.jsやcommon.jsなどの名前を使う <> Name_Not_Found<>sage<>2019/04/14(日) 21:09:03.21 ID:???.net<> >>822
(function(d)
ってなんで変数名宣言してないんですか?
(function hensuname(d)
変数宣言を調べたんですが、コレの持つ意味がよくわかりません <> Name_Not_Found<>sage<>2019/04/14(日) 21:09:17.98 ID:???.net<> 関数の間違いでした <> Name_Not_Found<>sage<>2019/04/14(日) 21:32:57.34 ID:???.net<> >>828
不要だからかと

定義、即、実行 <> Name_Not_Found<>sage<>2019/04/14(日) 23:12:45.48 ID:???.net<> >>828
即時関数+無名関数
https://qiita.com/hiroshimaeasyryo/items/a270b00c420ed96f02f0
即時関数は即時実行できる関数
関数名は不要なので無名関数にしている
こう書くことで変数名を閉じ込めることが出来るので、他のコードに影響を与えない
まぁ要するに便利な書き方だ <> Name_Not_Found<>sage<>2019/04/14(日) 23:53:09.23 ID:???.net<> const,let使ってんなら名前付き関数にして呼び出しでいいんじゃないの? <> Name_Not_Found<>sage<>2019/04/14(日) 23:54:41.01 ID:???.net<> >>811
jsfiddle は、Chrome では動くけど、Edge では動かない

click を使ったのか。
上下左右の矢印キーの方が、楽なのでは?

CSS アニメか <> Name_Not_Found<>sage<>2019/04/15(月) 01:03:14.64 ID:???.net<> >>833
うちのEdgeでは普通に動いてるよ
IE11はread onlyになるけど、それでも動くことは動くし

あと矢印キーのほうが楽だとは思わないし、スマホやタブレットのこと考えたら、
clickのほうが手間が省けるだろ <> Name_Not_Found<>sage<>2019/04/15(月) 05:40:17.90 ID:???.net<> >>830
>>831
ありがとぅ <> Name_Not_Found<>sage<>2019/04/15(月) 11:51:58.02 ID:???.net<> Androidに最初から入っているブラウザなどで、ある機能が使えないときに
エラーを出すのはどうしたらいいでしょう?
まだ実行して無くても、後の方の行に関数が書いてあるだけでもスクリプト自体が
エラーになって停止してしまって、肝心のエラー表示のロジック部分は実行される
事がない場合があるようです。つまり、

// 判定ロジックのつもり :
if ( !(関数 aaa が定義されているか?) ) {
alert( "aaa が使えません。" );
}
・・・
aaa();


とすると、関数 aaa が使えない場合でも、alert() 部分が実行される前に
実行前の先読みのような感じで aaa の呼び出し部分が先にパースだけされて
しまって、そこでスクリプト自体がエラーで停止してしまう事があるようです。
なんというか、先読みでパースされて内部でJITコンパイルされてから、
実行に移るからではないかと思っているのですが。 <> Name_Not_Found<><>2019/04/15(月) 11:59:25.67 ID:sdLCdqLM.net<> hrefとsrc以外の属性を削除したいのですがどうすればいいでしょうか?

var tag = document.getElementsByTagName("*");
for (i=0; i < tag.length; i++)
{
for (j=0; j < tag[i].attributes.length; j++)
{
if (tag[i].attributes[j].nodeName === "href" || tag[i].attributes[j].nodeName === "src")
{
//console.log(tag[i].attributes[j].nodeName);
//hrefとsrcが表示される
}
else
{
//console.log(tag[i].attributes[j].nodeName);
//styleとwidthを含めて全部表示される

tag[i].removeAttribute(tag[i].attributes[j].nodeName);
//styleとwidthを削除できない場合がある
}
}
} <> Name_Not_Found<>sage<>2019/04/15(月) 12:02:52.36 ID:???.net<> 機能判定には、modernizr だろ <> Name_Not_Found<>sage<>2019/04/15(月) 12:07:01.19 ID:???.net<> >>837
一旦、すべての属性を削除してから、href, src を追加すれば? <> Name_Not_Found<>sage<>2019/04/15(月) 12:13:08.01 ID:???.net<> 15パズル作れれば強くなれますか <> Name_Not_Found<>sage<>2019/04/15(月) 12:18:42.96 ID:???.net<> vs code 使用なんですが、javascriptファイルだけをコンソールででバックする方法はないんでしょうか?
いちいちhtml作ってalertするしかないんですか? <> Name_Not_Found<>sage<>2019/04/15(月) 12:18:46.21 ID:???.net<> バナナはおやつに入りますか? <> Name_Not_Found<>sage<>2019/04/15(月) 12:38:43.97 ID:???.net<> >>836
typeof演算子を使えばよい <> Name_Not_Found<>sage<>2019/04/15(月) 12:51:39.29 ID:???.net<> >>837
attributesから属性ノードを得たなら、nameプロパティで属性名を取得するものでは?
removeNamedItem() で削除では?
削除できない場合の再現コードは?
ttps://dom.spec.whatwg.org/#dom-element-attributes <> Name_Not_Found<>sage<>2019/04/15(月) 12:56:54.74 ID:???.net<> >>843
よく読んでもらえば書いてあるのですが、それだと、aaa() のように関数を
呼び出す場所を、実際には呼び出さない場合でもコンパイルのために読み込んで
しまい、そこでエラーになってしまうことがあるんです。
その場合、エラーになるだけで、判定ロジックは実行されず、alert()
メッセージは表示できません。 <> Name_Not_Found<>sage<>2019/04/15(月) 12:58:49.15 ID:???.net<> >>845
意味が分からない
JavaScriptはコンパイル言語ではないはずだが <> Name_Not_Found<>sage<>2019/04/15(月) 12:59:08.93 ID:???.net<> evalでいけんじゃんね? <> Name_Not_Found<>sage<>2019/04/15(月) 13:01:54.04 ID:???.net<> 数字アレルギーの直し方教えてください <> Name_Not_Found<>sage<>2019/04/15(月) 13:38:35.39 ID:???.net<> >>846
Chromeではちゃんと上手くいくようですが、IEだと勝手に先の方を読み込んで
しまうようなんです。 <> Name_Not_Found<><>2019/04/15(月) 13:56:37.71 ID:3HCQ3plR.net<> >>845
そりゃコンパイラがおかしいんでね? <> Name_Not_Found<>sage<>2019/04/15(月) 14:20:49.73 ID:???.net<> IEだけでなく、NoxPlayerに最初から入ってるブラウザもエラーが出ませんでした。 <> Name_Not_Found<>sage<>2019/04/15(月) 14:21:39.73 ID:???.net<> 誤:エラーが出ませんでした。
正:判定ロジックによる alert() 表示が出ませんでした。 <> Name_Not_Found<>sage<>2019/04/15(月) 18:21:37.94 ID:???.net<> >>837

function removeUnnecessaryAttrs(tagName) {
const tags = document.getElementsByTagName(tagName);
for (let i = 0; i < tags.length; ++i) {
const t = tags[i];
const n = document.createElement(tagName);
n.src = t.src;
n.href = t.href;
t.parentNode.replaceChild(n, t);
}
}

いちいち属性名しらべたりしないで、新しいの作って差し替えるほうがらくじゃね? <> Name_Not_Found<>sage<>2019/04/15(月) 19:13:32.51 ID:???.net<> 15パズルやってるんですが、すでに5行目くらいから理解できないのですが、わからない時のアプローチっていうんですか?
なんか、理解を助ける方法みたいなものありますか? <> Name_Not_Found<>sage<>2019/04/15(月) 19:21:44.68 ID:???.net<> 五行目ってこれ?
let container = null; // パズル本体
これ分からないなら、無理だと思う。いくら何でも基礎知識が無さすぎる

そもそも、15パズルから入るのは変だと思う
DOM操作か何か、もっと基礎的なところから始めたら? <> Name_Not_Found<>sage<>2019/04/15(月) 19:43:37.29 ID:???.net<> それじゃないです
function slide(elem, dx, dy) {
const x = Math.max(Math.min(3, parseInt(elem.dataset.x) + dx), 0);
}
function()
これです

それはからの変数定義ですよね
最も大きい数字をとってくるのがmath.max、小さい数字がmath.minというのがわかるのですが、これ一行ではデバッグしてもエラーになります <> Name_Not_Found<>sage<>2019/04/15(月) 19:58:36.32 ID:???.net<> >>856
一行だけ実行してもそりゃエラーが出る
全体を通せばエラーにはならない
https://jsfiddle.net/obscd3ea/

clickにaction()をバインド→actionの中でslide()を呼び出している
そして更にelem、(多分パズルのピースのdivかなんか)を渡している <> Name_Not_Found<>sage<>2019/04/15(月) 19:58:36.78 ID:???.net<> >>854
分割統治法 <> Name_Not_Found<>sage<>2019/04/15(月) 20:21:11.03 ID:???.net<> PlayCanvasは普及するでしょうか? <> Name_Not_Found<>sage<>2019/04/15(月) 20:26:09.81 ID:???.net<> するわけないじゃんwww <> Name_Not_Found<>sage<>2019/04/15(月) 22:33:18.05 ID:???.net<> こういうのが全く無いのもいけないし、ありすぎてもいけない
誰も使わないと途絶えるし、流行りすぎると弊害がある
今くらいが本当にちょうどいい <> Name_Not_Found<>sage<>2019/04/16(火) 00:06:29.74 ID:???.net<> 初歩的な質問ですみません。

a:hoverした際に、該当のhtmlページをiframeで表示する機能を実装したいのですが、
何か手頃なソースなどはありますか?
調べても、リンクの側に小さくサムネを表示させるようなものしか出てきません。
htmlの方は既に書き終えているのですが・・・aタグをホバーした時に反映されるようにするところで詰まってます <> Name_Not_Found<>sage<>2019/04/16(火) 01:04:51.28 ID:???.net<> >>862
こんな感じ?
かなりキモイけど
https://jsfiddle.net/Ldqt1ypz/1/ <> Name_Not_Found<>sage<>2019/04/16(火) 05:09:37.00 ID:???.net<> >>841
Quokka.js という拡張機能で、
そのファイル内と端末に、リアルタイムに変数の内容が表示される

ただし、端末からしかコピーはできない。
ファイル内には、Canvas で出力しているのかも?

Ctrl+Shift+P で、Quokka.js new file で使える。
ただし、保存したファイルからは、使えない <> Name_Not_Found<>sage<>2019/04/16(火) 05:21:46.29 ID:???.net<> >>857
ありがとうございます
1つ1つ試していかないと理解がおいつかないもので <> Name_Not_Found<>sage<>2019/04/16(火) 05:22:48.22 ID:???.net<> >>862-863
「jquery hover」で検索!

$( セレクター ).hover(
function() {
//マウスカーソルが重なった時の処理
},
function() {
//マウスカーソルが離れた時の処理
}
); <> Name_Not_Found<>sage<>2019/04/16(火) 07:01:38.78 ID:???.net<> ユーザーが入力したキーワードに当てはまるものを配列の中から選びたいです
これが完全一致とか部分一致の場合は簡単ですが、
似ているようなものを選択できる曖昧な一致を判断したいです
例えば「カエル」と言う言葉に対して「オーエス」よりも「カーネル」が
よりマッチしていると言う感じに判断したいのですが
良いアルゴリズムはありますでしょうか <> Name_Not_Found<>sage<>2019/04/16(火) 07:19:46.32 ID:???.net<> 機械学習・AI は、Python <> Name_Not_Found<>sage<>2019/04/16(火) 08:37:47.05 ID:???.net<> >>867
形態素解析後に類語辞書を引っ張る
アルゴリズムよりも辞書を用意する方が苦労するような <> Name_Not_Found<>sage<>2019/04/16(火) 08:39:59.18 ID:???.net<> >>866
>>863
ありがとうございますー。ちょっと調べてみますわ <> Name_Not_Found<>sage<>2019/04/16(火) 09:19:37.30 ID:???.net<> >>870
聞くときだけ敬語? <> Name_Not_Found<>sage<>2019/04/16(火) 09:23:23.46 ID:???.net<> ありがとうございますは敬語だろうが。コチャゴチャ抜かすとブッ飛ばすぞ。 <> Name_Not_Found<>sage<>2019/04/16(火) 10:03:14.97 ID:???.net<> >>863
これって一ページだけなんですな。
複数のaタグがある状態で、それぞれホバーしたらiframeに出るっていうのがやりたくて・・・ <> Name_Not_Found<><>2019/04/16(火) 10:36:58.59 ID:cywz1gqj.net<> >>844
分岐を外してみたところ特定の属性ではなくて、偶数の属性を取りこぼしているようですが原因は何でしょうか?

<div onclick="alert()" title=div style="height:200px"></div>
<a title=test style="display:block" href=# target=blank>
<img alt="img1" src="1.jpg" style="height:100px" width="50%" title=img1>
</a>
<img title=img2 alt="img2" src="2.jpg" height=200 width="1%" data-src="2.png" onclick="alert()">
<script>
var tag = document.getElementsByTagName("*");
for (i=0; i < tag.length; i++)
{
for (j=0; j < tag[i].attributes.length; j++)
{
console.log(tag[i].attributes[j].name,j);
//tag[i].removeAttribute(tag[i].attributes[j].name);
tag[i].attributes.removeNamedItem(tag[i].attributes[j].name);
}
}
</script> <> Name_Not_Found<>sage<>2019/04/16(火) 11:03:09.37 ID:???.net<> >>863>>866
https://jsfiddle.net/p6q0bo7g/1/

すみません、追加で質問です。このような形で、2つに分割した状態になってます。
この時、左側のタブのaタグをそれぞれhoverした時、右側のiframeにそれを反映する方法
について調べています。クリック時に表示させるところまではいったのですが、
ホバー時にも同様に表示させるところでつまずいています。 <> Name_Not_Found<>sage<>2019/04/16(火) 11:17:28.18 ID:???.net<> 配列の全要素に共通する前方一致文字列を置換したいのですが、何かいい方法ってありますか??

置換前
c:¥aaaa¥bbbb¥cccc¥a.txt
c:¥aaaa¥bbbb¥cccc¥b.txt

置換後
/home/a.txt
/home/b.txt

¥でスプリットしてループで回して確認していくしかないでしょうか。 <> Name_Not_Found<>sage<>2019/04/16(火) 11:29:47.02 ID:???.net<> >>874
配列状の物を添字を使って削除する時は後ろからやるのがセオリー
for (j=tag[i].attributes.length ; --j >= 0; ) <> Name_Not_Found<>sage<>2019/04/16(火) 11:40:54.83 ID:???.net<> >>877
ご教示ありがとうございました <> Name_Not_Found<>sage<>2019/04/16(火) 11:43:45.56 ID:???.net<> >>875
https://jsfiddle.net/rtezmdf0/ <> Name_Not_Found<><>2019/04/16(火) 12:15:33.78 ID:99qp+ZVK.net<> >>869
類語もある方がより良いとは思うのですが
私が今求めているものは、ユーザーがうろ覚えのキーワードを入力しても欲しかった用語がマッチするようにするための
単語の意味ではなく【文字間の関係性】を計算するアルゴリズムで、
今は「カエル」なら「カ→エ」「カ→ル」「エ→ル」
のような繋がりでチェックしたり、他にも文字数の一致度などから適当にやってまして
より精度を上げるためにローマ字化したりしようかなどと考えたのですが、もうすでにある程度確立された素敵なアルゴリズムや、モデルがあるのではないかと思い質問しました。 <> Name_Not_Found<>sage<>2019/04/16(火) 12:32:58.91 ID:???.net<> >>857
これ、2、3行でデバッグできないんですかね
少ないコードで動作確認しないとどういう動きかわからないです <> Name_Not_Found<>sage<>2019/04/16(火) 12:38:57.63 ID:???.net<> >>879
ありがとうございます。出来ました <> Name_Not_Found<>sage<>2019/04/16(火) 12:48:48.88 ID:???.net<> >>881
jsのステップインを使うと良い
js chrome デバッガ
辺りで検索 <> Name_Not_Found<>sage<>2019/04/16(火) 13:04:35.75 ID:???.net<> >>880
省入力候補/推測変換のことか?
IMEの仕事を肩代わりしたいなら、変換用の辞書を用意するしかなかろう <> Name_Not_Found<>sage<>2019/04/16(火) 13:32:39.97 ID:???.net<> >>880
レーベンシュタイン距離とか <> Name_Not_Found<>sage<>2019/04/16(火) 13:34:45.71 ID:???.net<> forやwhileについて勉強しています
全ての配列が対象の場合はmapやforEachのほうが簡便と書かれたサイトがあり、以下の
置き換えを試みたのですが上手くいきません。原因か、そもそも不理解でもあるのでしょうか

const getTag = doc.getElementsByTagName('a');
for (let i = 0; i < getTag.length; i = (i + 1) | 0) {
const node = getTag[i];
node.href = node.href.replace(/ttp/, 'ttps');
}

const getTag = doc.getElementsByTagName('a');
getTag .forEach(function(item, i) {
item[i].href = item[i].href.replace(/ttp/, 'ttps');
}); <> Name_Not_Found<>sage<>2019/04/16(火) 13:50:51.32 ID:???.net<> >>883
次はデバッガの使い方聞いてくるんじゃないのこの人
即時関数がわからんレベルなのになんで基礎から勉強しないんだろう <> Name_Not_Found<>sage<>2019/04/16(火) 13:52:43.45 ID:???.net<> >>880
https://mieruca-ai.com/ai/levenshtein_jaro-winkler_distance/ <> Name_Not_Found<>sage<>2019/04/16(火) 14:33:43.04 ID:???.net<> >>886
getElementsByTagName()の返り値はArrayではなくHTMLCollectionだよ

forEach使いたいならHTMLCollectionをArrayに変換すること
Array.prototype.slice.call(docment.getElementsByTagName('a')).forEach(function(node){
node.href = node.href.replace('ttp', 'ttps');
});

あと、無駄に正規表現使うのはバカに見えるからやめたほうがいいぞ <> Name_Not_Found<>sage<>2019/04/16(火) 15:10:34.12 ID:???.net<> …あまり強い言葉を使うなよ 弱く見えるぞ <> Name_Not_Found<>sage<>2019/04/16(火) 15:14:58.68 ID:???.net<> 正規表現使ったらバカに見えるのか <> Name_Not_Found<>sage<>2019/04/16(火) 15:17:50.65 ID:???.net<> まあ正規表現使ってる意味ない部分だしな <> Name_Not_Found<>sage<>2019/04/16(火) 15:19:54.77 ID:???.net<> 疲れたら妙に難しい方法でコード書くことあるよね・・・
朝起きて見直すと俺何やってんだって気分になる <> Name_Not_Found<><>2019/04/16(火) 15:20:53.80 ID:gASaHvq7.net<> これ、もとからhttpsだったらhttpssになっちゃうんじゃなかろか <> Name_Not_Found<>sage<>2019/04/16(火) 15:25:13.56 ID:???.net<> >>883
ありがとうございまし
初めて知りました <> Name_Not_Found<>sage<>2019/04/16(火) 15:34:04.15 ID:???.net<> >>889
ありがとうございました。勉強になりました。

>>894
tp:→tps:だったら大丈夫ですかね <> Name_Not_Found<><>2019/04/16(火) 15:39:08.53 ID:Er1Gv08x.net<> >>896
素直にreplace('http://', 'https://')でよくない?
なにやりたいか一目でわかるし <> Name_Not_Found<>sage<>2019/04/16(火) 15:46:28.36 ID:???.net<> スラッシュ入れなくていいんじゃないか <> Name_Not_Found<>sage<>2019/04/16(火) 15:50:54.02 ID:???.net<> >>897
そうですね 可読性には気を付けるべきでした

ちなみに、今回の場合はfor、while、map、forEach
どれを使うべきなのでしょうか
速度だとforやwhileのようですが <> Name_Not_Found<>sage<>2019/04/16(火) 15:57:07.16 ID:???.net<> >>857を修正

(存在理由が)よくわからん、無駄な処理をなくした。(ごめん笑)

https://jsfiddle.net/z5drg4Ly/ <> 897<>sage<>2019/04/16(火) 16:55:54.13 ID:???.net<> ということで本題

https://jsfiddle.net/u3zbswhk/

いつもどおりjQueryを導入した(笑)

131行 -> 96行 -> 83行 <> Name_Not_Found<>sage<>2019/04/16(火) 17:30:35.23 ID:???.net<> 速度てw <> Name_Not_Found<>sage<>2019/04/16(火) 17:43:34.66 ID:???.net<> >>901
この状態で13押したら
https://yabumi.cc/16a254d9f2ba189836444990.png
こうなるぞ
https://yabumi.cc/16a254f2bfd8779cf8101566.png

失格
でなおしてこい <> Name_Not_Found<>sage<>2019/04/16(火) 17:48:32.30 ID:???.net<> https://ics.media/entry/17451/
> WAI-ARIAはHTML要素の属性を動的に書き換えなければならないため、生JSやjQueryで制御しようとすると、正直、骨が折れます。

これ本当?
生JSで大変なのは分かるけど、jQuery使っても簡単にならないの?? <> Name_Not_Found<>sage<>2019/04/16(火) 17:49:41.33 ID:???.net<> >>903
映ってねーぞバーカw <> Name_Not_Found<>sage<>2019/04/16(火) 18:08:35.17 ID:???.net<> >>904
■ピュアJSの場合
要素.aria = 値;

■jQの場合
要素.attr({ aria : 値 });

ってのを、わざわざJS用意して書くじゃん?
なんならこれやる前に、要素にアクセスする必要もある

vueとかだと、それをHTML側に直に書けるから便利だねっつー話だと思う
まあそれぞれフレームワーク毎に特殊な書き方するわけだけど <> Name_Not_Found<>sage<>2019/04/16(火) 18:29:51.50 ID:???.net<> >>885,888
ここで聞いて大正解でした
本当にありがとうございます <> Name_Not_Found<>sage<>2019/04/16(火) 18:47:09.71 ID:???.net<> >>906
マジかー悩むなぁ
まあ、じゃあvueでいいか。しばらく生きてるだろ <> 897<>sage<>2019/04/16(火) 18:48:53.13 ID:???.net<> >>903
ワロタw いや失敬失敬。
でもそこは本質的な所じゃないから後よろ!
xとyの情報も持ってるからそれでできるはず!

>>904
相変わらず「脱jQuery」が目的になっちゃってる(感じがする)ダメなタイトルだなw

これ2つの意味がある。
1. ブラウザネイティブのDOM APIを使いましょう。
2. DOM操作(DOM API含む)をするのをやめましょう。

この記事は2みたいだけど、DOM操作をやめる = それが必要ないフレームワークを
使いましょうってことだけど、まあ、そのフレームワークの導入も正直骨が折れるだろうねw

で話を戻すけど、この人、頭がアプリ脳になってるんだと思う。
作り方がね。アプリの作り方。要素にARIA属性をつけようと思ったら、
その要素ごとにいちいちにコードを書かなきゃいけないと思ってる。
要素ごとにいちいち書くよりもフレームワーク使ってパーツを作ったほうが良い。という発想。

でもjQueryは特定のセレクタに対して横断的に処理を追加するもの。
要素ごとじゃなくて、クラスごとに1個書けばいいだけなの。

例えばリンク先のaria-checkedであれば、<button class="checked-button"> みたいに
クラスをつけておけば、jQueryでそのクラスに対して横断的に、aria属性を書き換える
処理を追加する。だから要素ごとにコード書く必要もないし、HTMLはシンプルになる。 <> 897<>sage<>2019/04/16(火) 18:49:58.47 ID:???.net<> > 昔のコードはHTMLを組み立てるのに文字列を結合するというストイックなやり方でした。

まあ、こんな事書いてるし、昔のコードがクソすぎるってだけなわけでw <> Name_Not_Found<>sage<>2019/04/16(火) 18:51:10.48 ID:???.net<> function(d){
// 1から15までのパネル及びブランク(null)の位置関係を調べるための配列
// 長さは4x4の16。座標(x,y)に位置する要素は、配列上ではpannels[x+y*4]に存在する
const pannels = [];

let container = null; // パズル本体

// パネルをスライドさせる処理
// x, y はパネルの座標でそれぞれ0以上4未満の整数
function slide(elem, dx, dy) {
const x = Math.max(Math.min(3, parseInt(elem.dataset.x) + dx), 0);
const y = Math.max(Math.min(3, parseInt(elem.dataset.y) + dy), 0);
elem.style.left = x * 25 + "%";
elem.style.top = y * 25 + "%";
elem.dataset.x = x;
elem.dataset.y = y;
}
助言を受け、スライドパズルのソースのここまでをchromeのデベロッパツールから実行してみたのですが、どういう処理が行われているか確認するには、これをコンソールなどに出力してみるってことでしょうか <> Name_Not_Found<>sage<>2019/04/16(火) 19:03:53.12 ID:???.net<> >>911
ステップインを使う
これ分からないならもう止めたほうが良いぞ <> Name_Not_Found<>sage<>2019/04/16(火) 19:10:22.10 ID:???.net<> >>909
間違ってるものをドヤ顔で晒して人様の手を煩わせておいて失敬失敬はないだろ <> Name_Not_Found<>sage<>2019/04/16(火) 19:47:00.17 ID:???.net<> >>912
ステップ実行とステップインは違うってことですね
近藤してましたが調べてみます <> 897<>sage<>2019/04/16(火) 19:48:22.28 ID:???.net<> >>904
https://ics.media/entry/17451/
> WAI-ARIAはHTML要素の属性を動的に書き換えなければならないため、生JSやjQueryで制御しようとすると、正直、骨が折れます。

って書いてあったから、サンプル作ったよ。リンク先にある。gridLayoutとlistLayoutの切替部分
https://jsfiddle.net/j3k94sz0/

正直、ボタンでラジオボタンのようなものを作るから面倒なことになるんだが、
そのお題で、汎用的なjQueryのコードにした。
「切り替えボタン+関連する要素にボタン情報を伝える」汎用コンポーネント

リンク先には
> JSのロジックにはWAI-ARIAの一切の処理が入っていません。
とか書いてあるが、HTMLにWAI-ARIAの処理(JavaScript)が入っていて
思考の切り替えが必要になる。HTMLに埋め込まれたJavaScriptも「JSのロジック」とみなせば、
「JSのロジック」にWAI-ARIAの処理が入ってるじゃんwってことになる。

俺が書いたコードは「HTMLにはJavaScriptの一切の処理が入っていません」
わずか6行のjQueryのコードで「ボタンによる切り替え」に対応している。
もちろんこれが複数あっても対応できる。別のプロジェクトでも使えるだろう。

っていうか、普通にラジオボタン使って作れば、もう少しわかりやすくできるんだがw <> Name_Not_Found<>sage<>2019/04/16(火) 22:57:40.00 ID:???.net<> >>911
本家が懇切丁寧に説明してくださってるんで
読みながら真似してみれば良いんでね?
https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints?hl=ja
https://developers.google.com/web/tools/chrome-devtools/javascript/step-code?hl=ja <> Name_Not_Found<>sage<>2019/04/17(水) 00:23:02.46 ID:???.net<> unityに匹敵するjavascript用ゲームエンジンを作って欲しい。 <> Name_Not_Found<>sage<>2019/04/17(水) 01:51:00.61 ID:???.net<> >>917
よし、お前さんが基礎を作って旗を振るんだ <> Name_Not_Found<>sage<>2019/04/17(水) 09:03:23.40 ID:???.net<> unityは以前、javascriptが使えていたのに…。
残念。 <> Name_Not_Found<>sage<>2019/04/17(水) 09:41:06.61 ID:???.net<> 誰かつくって <> Name_Not_Found<>sage<>2019/04/17(水) 09:43:00.90 ID:???.net<> >>919
結構最近だよね <> Name_Not_Found<>sage<>2019/04/17(水) 11:17:14.20 ID:???.net<> htmlのonclickを使わず、idの取得だけでクリックイベントを作ることは出来ますか? <> Name_Not_Found<>sage<>2019/04/17(水) 11:31:26.70 ID:???.net<> >>922
click() <> Name_Not_Found<>sage<>2019/04/17(水) 12:56:43.36 ID:???.net<> >>922
MouseEvent <> Name_Not_Found<>sage<>2019/04/17(水) 14:26:02.60 ID:???.net<> ロジック学んでいれば他の言語でも同じようにやれますか? <> Name_Not_Found<>sage<>2019/04/17(水) 14:41:23.59 ID:???.net<> じゃバスク版ユニティを作れ。
>>948 <> Name_Not_Found<>sage<>2019/04/17(水) 14:52:17.20 ID:???.net<> バスクってmsが発表した言語?jsと何の関係が? <> Name_Not_Found<>sage<>2019/04/17(水) 15:03:30.58 ID:???.net<> >>874-878
前から配列内の要素を削除していくと、
削除した瞬間に、後ろの要素が前にずれるから、バグる!

だから、配列の要素の削除は、難しい <> Name_Not_Found<>sage<>2019/04/17(水) 15:51:28.39 ID:???.net<> >>876
Ruby で作った。単純に、1文字ずつ比べる

filepaths = %w(abcd ab ab abc abcd aby)

index = nil
catch( :exit ) do # 2重ループを、一気に抜ける
filepaths.first.each_char.with_index do | char, idx |
# p [ char, idx ]

filepaths.each do | fp | # 1文字ずつ比較する
throw :exit if char != fp[ idx ]
end
index = idx
end
end

p index #=> 1。つまり、ab まで一致する <> Name_Not_Found<>sage<>2019/04/17(水) 16:02:22.62 ID:???.net<> >>911
そんな、ややこしいものをやらなくて良い

君がやるべきは、x から、2, 3 には行けるけど、右・下には行けない。
こういうチェック

0 は番兵。行けない部分に、壁を作って、判定を簡単にしている。
プログラミングよりも先に、図を描くのが重要!

0 0 0 0
0 1 2 0
0 3 x 0
0 0 0 0 <> Name_Not_Found<>sage<>2019/04/17(水) 16:10:37.69 ID:???.net<> >>929
chromeでもfirefoxでもsafariでも動きませんでした。
もしかしてあなた私より初心者なのでは?w <> 897<>sage<>2019/04/17(水) 16:49:19.07 ID:???.net<> >>930
問題はそこではなくて、これはデータを1次元配列で持ってるのが面倒くさい原因
2次元配列で持っていれば、別に番兵を作る必要もない。配列の範囲外は必ずundefined。
Rubyと違ってa[-1]が配列の後ろから1番目なんて変な仕様はないから自然な番兵となる。

もしくは直感と反するが
0 0 0 0 0 0
0 1 2 3 4 0
0 5 6 7 8 0
0 9 A B C 0
0 D E F x 0
0 0 0 0 0 0

から上下の0を取り除いて
0 1 2 3 4 0
0 5 6 7 8 0
0 9 A B C 0
0 D E F x 0

最初と最後の0を取り除いて(_ に置き換えてる)
_ 1 2 3 4 0
0 5 6 7 8 0
0 9 A B C 0
0 D E F x _

1次元配列にして、連続する0を1個にする。
1 2 3 4 0 5 6 7 8 0 9 A B C 0 D E F x

このデータで、現在のパネルの、左右を+1/-1、上下を+5/-5として扱えば動くぞ。
それを実装たのがこれだ https://jsfiddle.net/gqvn87k5/

>>913 ほれ、なおしたぞ。ドヤ? <> Name_Not_Found<>sage<>2019/04/17(水) 17:12:43.80 ID:???.net<> 出たよrubyのクソ仕様w
C時代の番兵でいろんなスレでアスペ荒らししてたのはRubyのクソ仕様が原因だったwww <> Name_Not_Found<>sage<>2019/04/17(水) 18:16:37.62 ID:???.net<> jsでゲーム作るならどんなのが? <> Name_Not_Found<>sage<>2019/04/17(水) 18:24:55.68 ID:???.net<> >>931
本人ではないが、サーバサイドスクリプトがクライアントサイドで動くわけなかろう
「サーバで動かせ」という意図ぐらいは察したらどうだ? <> Name_Not_Found<>sage<>2019/04/17(水) 18:49:54.62 ID:???.net<> nodeでも動きませんでした。
せめて動くjs書けないのww <> Name_Not_Found<>sage<>2019/04/17(水) 18:57:56.93 ID:???.net<> Rubyと書いてあるじゃん
まあJavaScriptのスレでRubyで答える方がおかしいんだけど <> 897<>sage<>2019/04/17(水) 19:06:15.77 ID:???.net<> しかもこういう用途に例外を使うとかいうクソ発想の持ち主w <> Name_Not_Found<>sage<>2019/04/17(水) 21:18:21.23 ID:???.net<> 爆釣やな <> 926<>sage<>2019/04/17(水) 21:22:10.36 ID:???.net<> スレは、答えを書く所ではない。
Ruby などの擬似コードで、考え方・ヒントを教える所

それをヒントにして考える・コードを書くのは、質問者自身がやるべき!

答えをコピペする奴は、進歩もしないし、どうにもならない <> Name_Not_Found<>sage<>2019/04/17(水) 21:26:39.17 ID:???.net<> >>940
ruby書くとこじゃねえんだよ
死ねや <> 897<>sage<>2019/04/17(水) 22:13:35.57 ID:???.net<> > Ruby などの擬似コードで、考え方・ヒントを教える所

ダメなコードから学べるのは
ダメなコード例です。 <> Name_Not_Found<>sage<>2019/04/17(水) 22:22:10.95 ID:???.net<> >>940
>Ruby などの擬似コードで、考え方・ヒントを教える所
死ね <> Name_Not_Found<>sage<>2019/04/17(水) 22:47:48.66 ID:???.net<> 2重ループ脱出には、catch, throw を使うのが定番。
本を読んでないだろ?

配列のインデックスが負数の場合は、配列を後ろから数えるのも定番。
色んな言語を調べてないだろ? <> 897<>sage<>2019/04/17(水) 23:50:48.63 ID:???.net<> >>944
そもそも2重ループなんてするものじゃないから(笑)

filepaths = %w(ab abc abc abc abcd abc)

index = (filepaths.first.chars.find_index.with_index do |char, idx|
!filepaths.all? { |fp| char == fp[idx] }
end || filepaths.first.length) - 1

p index <> 897<>sage<>2019/04/17(水) 23:52:46.81 ID:???.net<> あ、filepaths の内容戻すの忘れてたw

filepaths = %w(abcd ab ab abc abcd aby)

index = (filepaths.first.chars.find_index.with_index do |char, idx|
!filepaths.all? { |fp| char == fp[idx] }
end || filepaths.first.length) - 1

p index

これもう少し簡潔にかけそうな気がしてるんだけど、
すぐに思いつかない。 <> 897<>sage<>2019/04/17(水) 23:54:42.95 ID:???.net<> jQueryが得意な人は、いろんなものが得意なんやで?w <> Name_Not_Found<>sage<>2019/04/18(木) 02:12:45.30 ID:???.net<> >>942
jQueryばかり勧める人がよくいえたもんだな <> Name_Not_Found<>sage<>2019/04/18(木) 08:22:16.98 ID:???.net<> https://video.fc2.com/content/20090104qC1kSMF2/&tk=TnpnMk5EVXdOalU9 <> 897<>sage<>2019/04/18(木) 08:36:37.81 ID:???.net<> >>948
jQueryを勧めるのはjQueryがふさわしいからであって、
何もアプリを作る時にjQueryなんか勧めませんよ?

ウェブでアプリ作ろうなんて人はめったにいませんからね。 <> Name_Not_Found<>sage<>2019/04/18(木) 11:40:31.84 ID:???.net<> Ruby, jQuery(JavaScript), Kotlin, Elixir は、関数型言語でもある

でも、Ruby, Kotlinは、オブジェクト指向でもあるから、
その書き方が、jQuery, Elixir からすると、間違いのように言われる

関数型に、オブジェクト指向を混ぜるな、と言われる。
関数型は宣言型だから、手続き型みたいな書き方を嫌がる

関数型でやりすぎると、可読性が悪くなるから、わかりやすい書き方が良い場合もある <> Name_Not_Found<>sage<>2019/04/18(木) 11:57:26.78 ID:???.net<> >>951
言語とライブラリを並べて書かれるとなんか変な気分
次元を揃えず計算してるみたいな… <> Name_Not_Found<>sage<>2019/04/18(木) 12:35:37.62 ID:???.net<> >>951
それらは関数型言語ではない
血が近いからと言って日本人と中国人が違うのと同じ <> Name_Not_Found<>sage<>2019/04/18(木) 12:50:43.01 ID:???.net<> クロージャって何がいいの?
http://mevius.5ch.net/test/read.cgi/tech/1415419907/261
261 デフォルトの名無しさん sage 2014/12/15(月) 23:02:52.91 ID:BuhXHDiL
さらに言えば、Rubyのブロック変数のスコープの扱いが1.9で仕様変更されてるけど、
それについてmatz自身が

> それは、Rubyが最初から関数型言語としてスタートしてないからであって、言語が違うからですよね。

と語っているね


http://www.atmarkit.co.jp/news/200907/24/ruby.html <> Name_Not_Found<>sage<>2019/04/18(木) 12:54:03.65 ID:???.net<> >>954
もうすぐ無くなる言語を引き合いに出してどうするの? <> Name_Not_Found<>sage<>2019/04/18(木) 13:09:19.73 ID:???.net<> なんだクソ言語がまた「る、るびぃでもできるしっ!」するために考えなしに木に竹を接いだだけかw <> Name_Not_Found<><>2019/04/18(木) 14:50:50.31 ID:q+YWfZ8j.net<> >>954
良し悪しなんてないよw
こういう閉じたカタチしてるからclosureって呼ぼうねってだけで <> Name_Not_Found<>sage<>2019/04/18(木) 14:52:15.32 ID:???.net<> クロージャと無名関数、名前どちらかに統一してほしかった
最初2つが同じものを指すと知らなくて混乱したわ <> Name_Not_Found<>sage<>2019/04/18(木) 14:53:43.68 ID:???.net<> >>958
もう少し深くお勉強したほうが良いかも… <> Name_Not_Found<>sage<>2019/04/18(木) 14:53:55.42 ID:???.net<> クロージャかつ無名関数がよくあるってだけで別。 <> Name_Not_Found<>sage<>2019/04/18(木) 15:04:40.55 ID:???.net<> 単体で使うことほとんどない <> Name_Not_Found<>sage<>2019/04/18(木) 15:05:03.54 ID:???.net<> と思ったけどそうでもなっ買った <> Name_Not_Found<>sage<>2019/04/18(木) 15:05:52.76 ID:???.net<> 無名・匿名関数は、単に名前のない関数。
一方、クロージャは、外のスコープの変数の参照を、つかんでいるもの

Ruby の関数はクロージャではないけど、関数内のブロックがクロージャ。
つまり、2つのスコープを持つ。
ES2015 では、これを真似て、JavaScript にもブロックスコープが出来た

一方、Python は、Rubyの真似をしないから、批判が大きい <> Name_Not_Found<>sage<>2019/04/18(木) 15:15:08.63 ID:???.net<> JavaScriptの関数はクロージャだが、無名とは限らない <> Name_Not_Found<>sage<>2019/04/18(木) 15:31:29.25 ID:???.net<> >>963
なるほど、rubyはもうすぐ消えて無くなる言語と <> Name_Not_Found<>sage<>2019/04/18(木) 15:53:15.30 ID:???.net<> datasetは何のために使うのですか? <> Name_Not_Found<>sage<>2019/04/18(木) 16:00:33.49 ID:???.net<> >>963
誰も知らない無名言語のマネはできないなぁw
それとも有名言語のC++やJavaにはブロックスコープが無い、もしくはrupy?とかいう泡沫言語からパクったのかい?w


https://news.ycombinator.com/item?id=5157886

"To me the biggest annoyance about the Ruby community is the belief that they invented everything"
「Rubyコミュニティの連中はヤツラが全てのことを発明したと信じてやがってムカつく」

"People don't hate ruby, people hate the ruby on rails community" "This" "+1 to this"
「Rubyが嫌いなんじゃなくて、Railsコミュニティが嫌いなんだよ」「それな」「ほんこれ」 <> Name_Not_Found<><>2019/04/18(木) 16:42:56.13 ID:50TA3Y6O.net<> >>966
ある要素になんらかのデータを紐づけたいと思ったら使うのがdataset
・ある要素が処理対象か否かを表すフラグ
・JSライブラリ等に渡すパラメータ
・処理中のデータの一時保存先
なんでも好きなように使うがいい <> Name_Not_Found<>sage<>2019/04/18(木) 17:27:28.90 ID:???.net<> >>968
classやidとはどう違うのですか?
参考サイト探したんですが、javascriptについては見つからなかったです <> Name_Not_Found<>sage<>2019/04/18(木) 18:15:15.35 ID:???.net<> datasetはオレオレ属性作らなくても固有の値持たせられるし、setAttribute/getAttributeを使わなくても直に値を読み書きできるのがメリット
classやidで足りてるなら無理して使わなくてもいいよ <> Name_Not_Found<>sage<>2019/04/18(木) 18:18:55.53 ID:???.net<> もらった15パズルのサンプルに含まれていたので、、、 <> Name_Not_Found<>sage<>2019/04/19(金) 01:03:15.23 ID:???.net<> datasetは単なるdata-*属性の省略記法でしょ
element.dataset.hello = "world";
element.setAttribute("data-hello", "world");

style属性にも同じようなのがある
element.style.bgColor = "#ffffff";
element.setAttribute("style", "background-color:#ffffff;"); <> Name_Not_Found<>sage<>2019/04/19(金) 03:56:40.90 ID:???.net<> >>964
JSの関数はクロージャになり得る能力、ようは要件を備えてるだけで
関数定義が実際クロージャな関数を作ってるのであって
new Function等で定義された関数はクロージャではないし、
デフォの関数のいくつかもクロージャではない <> 897<>sage<>2019/04/19(金) 08:10:45.35 ID:???.net<> >>973
JSの関数は全てクロージャーだが
クロージャーにならないものが有るというのなら
それかいてみて(笑) <> Name_Not_Found<>sage<>2019/04/19(金) 08:19:53.05 ID:???.net<> function hoge() {
return 42;
} <> Name_Not_Found<>sage<>2019/04/19(金) 08:29:17.99 ID:???.net<> PlayCanvasはunityを超えるか? <> Name_Not_Found<>sage<>2019/04/19(金) 12:00:22.33 ID:???.net<> vscodeでデバッグしていると時々機能しなくなるのはなぜですか
特定する方法はありますか?
再起動すると治りやんす <> Name_Not_Found<>sage<>2019/04/19(金) 12:09:16.11 ID:???.net<> >>976
今はgodotが勢いあるのでは? <> Name_Not_Found<>sage<>2019/04/19(金) 13:19:21.72 ID:???.net<> >>974
クロージャというのは定義された場所のスコープと関数スコープがチェーンで繋がっているものを言うのであって
定義の仕方が特殊でそれに当てはまらないものはクロージャとは言えない
例えばネイティブ関数はチェーン先を概念的に持っていないし、
new Functionは生成された場所に関わらずglobalThisとリンクされる <> Name_Not_Found<><>2019/04/19(金) 13:25:13.17 ID:YQCMjmdd.net<> getElementで取り出した要素、例えば
<div class="hoge"〜〜〜 style="xxx">
の中からstyleもしくはxxxの有無を調べたいときはどうやってかけばいいですか?
indexOf("style")やindexOf("xxx")で試しているんですが上手くいきません
hogeを検索する場合、変数名.className.indexOf("hoge")で検索出来るんですがstyleになると上手くいきません <> Name_Not_Found<>sage<>2019/04/19(金) 13:54:13.10 ID:???.net<> https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/style

要素.style のプロパティを確認する <> Name_Not_Found<>sage<>2019/04/19(金) 14:26:41.04 ID:???.net<> classの存在確認もIE9以下案件でないならclassName使わないでclassList.containsを使いましょう <> 897<>sage<>2019/04/19(金) 14:39:51.49 ID:???.net<> >>979
> クロージャというのは定義された場所のスコープと関数スコープがチェーンで繋がっているものを言うのであって
> new Functionは生成された場所に関わらずglobalThisとリンクされる

つまりglobalThisが「定義された場所」になるクロージャーですね <> Name_Not_Found<>977<>2019/04/19(金) 15:03:49.02 ID:???.net<> a = window.getComputedStyle(変数,null).getPropertyValue('xxx');
でaを条件分岐に使うことで解決出来ました
もっと簡単にできそうな気がするけど出来たからまぁいいや <> Name_Not_Found<>sage<>2019/04/19(金) 16:33:56.23 ID:???.net<> >>930
これのコードありますか
0 0 0 0
0 1 2 0
0 3 x 0
0 0 0 0
これはテトリスかなにかのチュートでみたことはあります <> Name_Not_Found<>sage<>2019/04/19(金) 18:49:00.23 ID:???.net<> >>983
君にいわせると、すべての関数がクロージャだな <> 897<>sage<>2019/04/19(金) 19:00:07.36 ID:???.net<> はい。JavaScriptでは関数は全てクロージャーです。
最初からそう言ってるよ <> Name_Not_Found<>sage<>2019/04/19(金) 19:02:48.17 ID:???.net<> クロージャではなく、スコープチェーンだろ
本当にこのjQuery君のアホは直らないな <> Name_Not_Found<>sage<>2019/04/19(金) 19:42:08.58 ID:???.net<> JSにおける関数の定義は「[[Call]]内部メソッドを持つオブジェクト」であって
全てクロージャと言うのは横暴だな <> Name_Not_Found<>sage<>2019/04/19(金) 19:49:01.93 ID:???.net<> もうjqueryでngワード登録でいいんじゃね <> Name_Not_Found<>sage<>2019/04/19(金) 19:54:47.62 ID:???.net<> 日本は山が多いと言ってあちこちの山を紹介するのは意味があるが
足元の小山まで拾って日本は全て山でできてるなんて言っても何の意味もないのにな

何にも知らない外人に紹介するときは大雑把にそう言っても良いかもしれないが
ここは内輪なんだからあえて山と呼ぶ意味のない山はあえて山と呼ばないほうが適切だろう <> Name_Not_Found<>sage<>2019/04/20(土) 01:47:37.29 ID:???.net<> わかりやすい <> Name_Not_Found<>sage<>2019/04/20(土) 02:15:19.18 ID:???.net<> 自演乙。 <> Name_Not_Found<>sage<>2019/04/20(土) 06:53:46.46 ID:???.net<> 可愛そうだけど、自演ではありません <> Name_Not_Found<>sage<>2019/04/20(土) 09:12:23.43 ID:???.net<> 自演っつーかなりすましがいるな
誰のこととは言わんけどw <> Name_Not_Found<>sage<>2019/04/20(土) 10:00:50.46 ID:???.net<> javascriptのデバッガって何を使うんですか?
vs codeです <> Name_Not_Found<>sage<>2019/04/20(土) 11:44:32.71 ID:???.net<> わかりやすい15パズル教えてください <> Name_Not_Found<>sage<>2019/04/20(土) 12:59:37.70 ID:???.net<> drawrectを配列で繰り返し表示出来ますかね
アレイみたいな <> Name_Not_Found<>sage<>2019/04/20(土) 16:43:25.06 ID:???.net<> >>980-984
jQuery で、style の取得・設定は、

<div class="hoge">あ</div>

// 設定
$( '.hoge' ).css( {
backgroundColor: 'Yellow',
color: 'Red'
} );

// 取得。rgb(255, 255, 0)
console.log( $( '.hoge' ).css( 'background-color' ) );

>>985
ソースコードは無い。
15 パズルは難しい。
絶対に解けない問題が作れてしまうから <> Name_Not_Found<>sage<>2019/04/20(土) 17:29:12.53 ID:???.net<> >>999
もうちょい簡単なパズルありますかね <> Name_Not_Found<>sage<>2019/04/20(土) 17:49:34.93 ID:???.net<> 3パズル <> Name_Not_Found<>sage<>2019/04/20(土) 17:50:53.90 ID:???.net<> 3×3 の「〇×」ゲームは? <> Name_Not_Found<>sage<>2019/04/20(土) 17:56:20.81 ID:???.net<> 次スレ
+ JavaScript の質問用スレッド vol.139 +
http://mevius.5ch.net/test/read.cgi/hp/1555750241/

テンプレは数スレ前のものを持ってきました
足りない場合は適当に追加してください <> 1001<><>Over 1000 Thread.net<> このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 62日 15時間 43分 24秒 <>