2ch勢いランキング アーカイブ

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


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

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

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

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

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

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

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

単に A, B で Aの部分で再代入なしの代入(束縛)ができることに気づいてないマヌケってだけ
Name_Not_Found [sage] 2019/02/17(日) 03:18:40.96ID:???
だよな!こうすればいいんだよな!
[1,2,3].map(v => (const w = v + 2, w * w))
あ、あれ?(TдT)
Name_Not_Found [sage] 2019/02/17(日) 03:20:58.84ID:???
まとめ
カンマ演算子につき、
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.35ID:???

いい加減にしろよ?
ttps://mevius.5ch.net/test/read.cgi/tech/1548720347/160
で決着ついただろ!
Name_Not_Found [sage] 2019/02/17(日) 03:30:39.19ID:???

恥ずかしいからやめて…
Name_Not_Found [sage] 2019/02/17(日) 03:39:12.16ID:???
テンプレだけどさ、
jQueryはいいとしてさすがに今どきjQuery UIはなくね?
Name_Not_Found [sage] 2019/02/17(日) 03:40:32.49ID:???
Backbone.js、Knockoutjsも。
Name_Not_Found [sage] 2019/02/17(日) 04:00:32.14ID:???
jQuery偏重テンプレがあからさますぎ
Name_Not_Found [sage] 2019/02/17(日) 04:12:03.83ID:???

面白いジョークをありがとう。朝からみんな笑ってスレに活気が生まれたよ。
Name_Not_Found [sage] 2019/02/17(日) 12:46:19.32ID:???

>1と>4だけでいいかもね
Name_Not_Found [sage] 2019/02/17(日) 12:48:19.46ID:???
というか質問テンプレートを使った質問を
ここしばらく見たことがないなw
Name_Not_Found [sage] 2019/02/17(日) 13:00:12.21ID:???

回答側にも問題有
是正する人がいないから、無意味と化してる
Name_Not_Found [sega] 2019/02/17(日) 16:43:30.99ID:???
コールバック関数を登録する処理などで、
登録されたコールバックの引数が どんなもんかを
チェックする方法ってありますか?

たとえば、引数に int ひとつだけの関数が登録されることを前提にしてるのに
引数が文字列な関数を登録したら、登録時にエラーにしたいんだ
Name_Not_Found [sage] 2019/02/17(日) 16:55:24.53ID:???
typescript使うかflow使うか、変換挟まないで素のjsのままやりたいならbabelparser
Name_Not_Found [sage] 2019/02/17(日) 16:56:53.21ID:???
あbabelparserはこの要件に合わないな。忘れてくれ
Name_Not_Found [sage] 2019/02/17(日) 17:00:25.52ID:???

コールバックを呼び出すのがあなたが作成している関数ならtypeof演算子で調べられる
Name_Not_Found [sage] 2019/02/17(日) 17:41:48.66ID:???

function sample (i, f) {
if (typeof i !== 'number') {
throw new TypeError;
}

f(i);
}
Name_Not_Found [sage] 2019/02/17(日) 18:09:43.19ID:???

あーそうか、型がそもそも無いんだから無理だね。
typescript使うしかないか
ありがとう
Name_Not_Found [sage] 2019/02/17(日) 18:14:15.83ID:???
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.73ID:???

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

また、他に初心者にオススメの学習サイトってありませんか?
Progateは分かりやすく初級編は一周しましたが、クレジットカード持ってなく会員登録できないのでやめました。
ドットインストールはテキストエディタが白くて目が疲れて集中出来ないのでやめました。
なので、なるべく無料で初心者向けの学習サイトがあったら教えてください。お願いします...
Name_Not_Found [sage] 2019/02/18(月) 19:29:51.47ID:???

そのサイトは確度に問題があると思うがなあ
Name_Not_Found [sage] 2019/02/18(月) 19:41:40.89ID:???

まじっすか...
使うのやめます...
Name_Not_Found [sage] 2019/02/19(火) 09:23:58.72ID:???

とりあえずMDNでいいんじゃね。
初心者用チュートリアルとかあるし
Name_Not_Found [sage] 2019/02/19(火) 13:07:52.04ID:???
スレを未読に戻す機能ってありますか?
レス代行しているのですが、後でと思って放置してしまう時があります
未読に戻せれば忘れないのですが
Name_Not_Found [sage] 2019/02/19(火) 13:08:10.51ID:???
すいません、スレを間違えました
Name_Not_Found [sage] 2019/02/19(火) 13:11:03.39ID:???
※このスレはレス代行業者に監視されています
Name_Not_Found [] 2019/02/19(火) 19:14:39.12:q40YB38R
JavaScriptの勉強始めたいんだけど、練習環境ってどうすればいいの?
FireFoxのやつとか使うのが一般的?

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

見たところ自分に合ってそうです!
やってみます!
ありがとうございます!
Name_Not_Found [] 2019/02/19(火) 22:28:44.70:q40YB38R
jupyter notebookでできるし、jupyterlabでもできるんだ...
知らなかった!サンクス

ちなみにnode.jsのnodebrewとnpmは、pythonだとpyenvとpipに相当するという理解でOK?
Name_Not_Found [sage] 2019/02/20(水) 06:23:39.09ID:???
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.66ID:???

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.87ID:???
>>43
死ね
Name_Not_Found [sage] 2019/02/20(水) 17:16:50.42ID:???
ゲーム用のフレームワークとゲームエンジンでは何が違うんですか?
また、javascriptだけで出来る範囲というのはどこまですか?
Name_Not_Found [sage] 2019/02/20(水) 18:29:49.56ID:???

フレームワーク= ライブラリ群
エンジン=ライブラリ
unityぐらいになると、独自のフレームワークになったりする

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

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

まあ「フレームワーク=ライブラリ群」という説明が間違ってるから
意味不明になるんだけどねw
Name_Not_Found [sage] 2019/02/20(水) 20:17:42.69ID:???
フレームワーク・・・俺(フレームワーク)が呼び出すから、お前は中身を書いてくれ
ライブラリ・・・俺(ライブラリ)が中身を書いたから、お前は便利に使ってくれ
Name_Not_Found [sage] 2019/02/20(水) 20:18:32.86ID:???
それはIoCの説明では?
Name_Not_Found [sage] 2019/02/20(水) 20:24:33.95ID:???
全く違う
Name_Not_Found [sage] 2019/02/20(水) 20:40:09.61ID:???

申し訳ない、飲みながら適当n書きました!
Name_Not_Found [] 2019/02/20(水) 22:59:09.17:qoPWETkF
ローカルHTMLファイルをChromeで

file:///〜.html#aaa
とか
file:///〜.html?aaa
のような感じで開こうとすると
#が%23、?が%3Fに置き変わってしまい
htmlファイルそのものが見つからなかったような感じになってしまうんですが
このようにURLにhashなりsearchなりを含めた形で開くのはローカルでは無理なのでしょうか?
Name_Not_Found [sage] 2019/02/21(木) 00:21:00.12ID:???

へぇ、知らなかった
その辺は限界かと思うので、xamppなどを導入すると良いと思う
hostsファイルの編集と組み合わせるとメチャクチャ強力だぞ
詳細はこの辺
ttp://https://15g.jp/post-770/
Name_Not_Found [sage] 2019/02/21(木) 04:34:50.79ID:???
node js とは実行環境のことですか?vs code使うときに必要なようですが
Name_Not_Found [sage] 2019/02/21(木) 06:54:03.52ID:???

file:///は通信を発生させないから
Name_Not_Found [sage] 2019/02/21(木) 08:48:49.50ID:???
vs codeなんですが nodejsとどうやって関連付けするか教えてください
add configurationの部分に候補が出てこないです
node jsはインストールしてます
Name_Not_Found [sage] 2019/02/21(木) 08:56:26.44ID:???

ttp://https://code.visualstudio.com/docs/nodejs/nodejs-tutorial
Name_Not_Found [sage] 2019/02/21(木) 09:57:14.66ID:???
連想配列のキーに使えない文字ってありますか?
また、連想配列のキーの長さの最大値って何文字ですか?
ちょっと重複のカウントとかに連想配列を使いたいので知りたいです。
よろしくお願いします。
Name_Not_Found [sage] 2019/02/21(木) 10:55:03.20ID:???
> 重複のカウントとか

どんな要件か教えろ
そんなくだらないこと考える必要のない素晴らしい実装を見せてやんよシュッシュッ
Name_Not_Found [sage] 2019/02/21(木) 12:48:18.44ID:???

[[Prototype]]をnullにしたなら、文字列リテラルの仕様に準ずる
60 [sage] 2019/02/21(木) 12:51:28.22ID:???
値を捨てるぐらいなら、new Set()を使えばいいのに、とは思う
Name_Not_Found [sage] 2019/02/22(金) 06:51:51.53ID:???
関数単位で見た場合副作用が無いとは言えないね
Name_Not_Found [sage] 2019/02/22(金) 07:02:11.35ID:???
オブジェクトを連想配列に使う場合に、
たまたま、__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.14ID:???

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.54ID:???

でnullにするよう指摘済
文字列のままならそれでよいが、Mapがより有用
値が不要ならSet
Name_Not_Found [sage] 2019/02/22(金) 08:45:47.99ID:???

質問に対する答えになってないね。
分かんねーなら黙ってろクズ。
Name_Not_Found [sage] 2019/02/22(金) 12:05:23.48ID:???
オンラインのエディタでもいいの?
VS codeの設定がわからん
Name_Not_Found [sage] 2019/02/22(金) 18:44:08.29ID:???
ttp://https://playcode.io/
というオンラインエディタ使ってるんですが、どこからダウンロードできますかね
ファイルを
Name_Not_Found [sage] 2019/02/22(金) 23:36:56.20ID:???
たまたま__proto__というキーが来ることなんてクライアントサイドで考える必要はまったくない
そんなことを言い出したらたまたま1GBのキーが来ることなども考えないといけない
隕石が怖いとかそんなレベルな話は止めよう
Name_Not_Found [sage] 2019/02/23(土) 03:15:24.82ID:???
__proto__はプロトタイプ汚染攻撃に使われるらしい。
しかしこれ攻撃側も結構大変みたいだな。
目隠ししたまま迷路を解くみたいだ。
Name_Not_Found [sage] 2019/02/23(土) 05:49:15.68ID:???
デバッグって、ブラウザの更新しながらやるもんですか?
なにかツールがあるんでしょうか。
Name_Not_Found [sage] 2019/02/23(土) 08:58:24.54ID:???

かいひするほうほうがるなら、対策した方が良くね?
Name_Not_Found [sage] 2019/02/23(土) 11:09:41.05ID:???
beginpathはjavascriptではないのですか?
Name_Not_Found [sage] 2019/02/23(土) 11:21:40.61ID:???

さあ
俺はできることなら全てやるべきとは考えないけどね
著名なライブラリとかだとどこでどう使われるか分かんないから気にするのは分かるけど
Name_Not_Found [sage] 2019/02/23(土) 11:26:12.72ID:???

キリないぞ
Name_Not_Found [sage] 2019/02/23(土) 11:27:58.98ID:???
ユーザー操作が前提なら対策せざるを得ないというかセキュリティの問題になる
手元で使う分には注意するだけで済む事もあるんじゃない
63 [sage] 2019/02/23(土) 11:57:11.59ID:???
例えば、英単語を登録して、使用回数を数える場合、
オブジェクトを連想配列に使うと、

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

var obj = { };
obj[ '__proto__' ] = 1;
Name_Not_Found [sage] 2019/02/23(土) 11:59:59.17ID:???

死ね。お前がハマってんのはクソ言語の改行コードだろwww
ttps://mevius.5ch.net/test/read.cgi/tech/1545421414/166
Name_Not_Found [] 2019/02/23(土) 15:04:25.52:HHC5SAPM
jQueryでメソッドに引数として渡したいものがちょっと複雑なとき、即時関数で

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

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

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

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

なんで即時関数を使わないといけないだ?

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

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

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.62ID:???

o.key → o[key]
変数名とプロパティ名がごっちゃになってる
Name_Not_Found [sage] 2019/02/23(土) 21:44:06.76ID:???

ああそうか、わかりました
o.keyだとkeyが変数でアクセスできるわけないですね
[]だと中が変数でも中身の文字列に変換されるからアクセスできるってわけですね
ありがとうございました
Name_Not_Found [sage] 2019/02/23(土) 21:53:11.02ID:???
質問です
sinが-cosが-だったらπ〜2πの角度で返してくれる関数って存在しますか?
asinとacosが別々なのでどっちも-π/2〜π/2または0〜πで返ってしまうので
Name_Not_Found [sage] 2019/02/23(土) 22:16:01.99ID:???

Mathクラス
ttp://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.62ID:???

ようは、オブジェクト初期化子を使うのが問題なだけだな
Name_Not_Found [sage] 2019/02/24(日) 04:48:44.92ID:???
javascriptのゲームエンジンは何がおすすめですか?
更新されていないものが多いのですか・
Name_Not_Found [sage] 2019/02/24(日) 09:38:59.56ID:???

好み
Name_Not_Found [sage] 2019/02/24(日) 09:50:29.43ID:???
ふつうにPhaserでいいだろ。
Name_Not_Found [sage] 2019/02/24(日) 10:00:38.98ID:???
enchant jsってのは古いのですか?
Name_Not_Found [sage] 2019/02/24(日) 10:04:26.94ID:???
無条件に「お勧め」を選ぶんだから好みだろ
古いとか気にせず、好きに選べばよい
Name_Not_Found [sage] 2019/02/24(日) 10:43:52.63ID:???
Unity
Name_Not_Found [sage] 2019/02/24(日) 10:49:43.35ID:???

ttp://https://github.com/wise9/enchant.js
Name_Not_Found [sage] 2019/02/24(日) 11:23:35.25ID:???
PIXI.jsはいいぞ
Name_Not_Found [sage] 2019/02/24(日) 11:54:55.71ID:???
フレームワーク使うならゲームエンジンで良いのでは と思うのですが
Name_Not_Found [sage] 2019/02/24(日) 12:52:13.90ID:???

自己判断できるなら他人に尋ねる必要はないと思うのですが
Name_Not_Found [sage] 2019/02/24(日) 12:54:32.46ID:???
昔jsでゲーム作ったらチートやりたい放題になって泣いた
サーバーでデータ持たせればいいんだけど、それはそれで面倒すぎる
Name_Not_Found [sage] 2019/02/24(日) 13:20:17.32ID:???

1人遊び用にすればいい
Name_Not_Found [sage] 2019/02/24(日) 13:36:40.96ID:???

それならDXライブラリで作るんだ・・・
webの特色、サーバーサイドの処理はやっぱり活かしたかった
まぁもう作ることもないだろうけどね
79 [] 2019/02/24(日) 20:02:21.10:Zws/aviX

あー関数を渡せば勝手に実行してくれるんですね、そういえばやったことあったような

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

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

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

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

他には、Haxe とか
Name_Not_Found [sage] 2019/02/25(月) 07:48:47.91ID:???
vs codeでどうやってjavascriptのでバッグをするんでしょうか?
チュート通りにやるのですが、うまくいきません
ttps://i.imgur.com/wfkEtt0.jpg
Name_Not_Found [sage] 2019/02/25(月) 08:05:44.50ID:???
最近の質問、投げっぱなしばかりだけど、全員同じ人なのかな?
Name_Not_Found [sage] 2019/02/25(月) 11:14:35.32ID:???

解決しました
Name_Not_Found [sage] 2019/02/25(月) 11:14:52.43ID:???
ゲームエンジンを使わないでゲーム作るメリットはなんですか?
Name_Not_Found [sage] 2019/02/25(月) 11:54:30.46ID:???
仕組みの勉強とかじゃね
あと新しい言語学ぶときとかの題材にいい。俺の場合直接数学とか題材にしちゃうと眠くなるので…
Name_Not_Found [sage] 2019/02/25(月) 12:11:37.27ID:???

何が解決?
Name_Not_Found [sage] 2019/02/25(月) 12:14:42.42ID:???
食料問題
Name_Not_Found [sage] 2019/02/25(月) 12:25:28.92ID:???

良かったね
もう報告しなくていいよ
114 [sage] 2019/02/26(火) 00:21:29.84ID:???
質問したいことがあります。
とても困っています。

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

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

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

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

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

ttp://https://ideone.com/63JYMf


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

是非とも宜しくお願い致します。
Name_Not_Found [sage] 2019/02/26(火) 05:33:04.82ID:???
おすすめオンラインエディタ教えてください
Name_Not_Found [sage] 2019/02/26(火) 07:00:35.59ID:???

そういう依頼は他所で有料でやると良いよ
114 [sage] 2019/02/26(火) 07:11:33.13ID:???

わかりました!ありがとうございます。
オススメのサービスなどございますか?
Name_Not_Found [sage] 2019/02/26(火) 07:23:54.49ID:???

ぐぐれ
Name_Not_Found [sage] 2019/02/26(火) 10:08:49.89ID:???
>デフォルトが終日可、かつ、7日以内の場合、ボタンを切り替えられなくしたい

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

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

ボタンを切り替えられないようにするには、disabled 属性とかだろ?
「html button 押せない」で検索!
Name_Not_Found [sage] 2019/02/26(火) 10:49:32.77ID:???
画像のキャラクターを生のjavascirptだけで移動させることはできますか?
フレームワーク使わずにです
Name_Not_Found [sage] 2019/02/26(火) 10:51:13.78ID:???

「画像のキャラクター」
が何を指すか分からない
例を出して
Name_Not_Found [sage] 2019/02/26(火) 11:23:32.44ID:???
2dのスプライトですね
パラパラ漫画のように、スプライトを切り替えながらアニメーションさせていく感じです
勉強のためにフレームワークなしでやってるんですが
Name_Not_Found [sage] 2019/02/26(火) 11:51:50.82ID:???

個人的な意見だけど、そここそ逆にライブラリに頼るべき場所と思うが・・・
・ダントツで手っ取り早いのはアニメーションgifを置くだけ
・軽いのはcssスプライトで画像を切替える方法。移動はtopとleftを増減させる
ttp://https://qiita.com/takumifukasawa/items/7463d9fa48aced1cf3cb
・画像の差し替えが楽なのはimgを複数用意し、予め全て読み込ませておいて、display:noneなどで切り替えつつtop・leftで移動
か?

アニメーションはあっという間に重くなる
動いてハイ終わり、なら何とでも鳴るけど、すぐにパフォーマンスを考える必要が出てくる
できるだけcss使う方法を考えてみて
Name_Not_Found [sage] 2019/02/26(火) 17:40:56.14ID:???
↑cssかフレームワークかなんですね、、、
フレームワークってどれがいいんですか?
古いの多くて
Name_Not_Found [sage] 2019/02/26(火) 21:57:53.04ID:???
SVGアニメにすればJSからコントロールできる
Name_Not_Found [sage] 2019/02/27(水) 03:22:56.18ID:???

jquery不要の奴が良いと思うけど、
やりたいことが変なので色々と探す事になると思う
ttp://https://grow-group.jp/archives/1214/


その手があったか
ただ俺には良く分からん
Name_Not_Found [] 2019/02/27(水) 05:28:07.90:C+9QUj8L
javascript初心者です
開発環境は秀丸エディタとchromeで十分でしょうか?
Name_Not_Found [sage] 2019/02/27(水) 07:09:06.15ID:???
秀丸じゃ無理
Name_Not_Found [sage] 2019/02/27(水) 09:11:16.25ID:???

VSCodeやSublimeTextのがよい。
132 [] 2019/02/27(水) 09:22:43.38:C+9QUj8L
,134
ありがとうございます
VSCodeをインストールしようと思います
42 [sage] 2019/02/27(水) 09:39:37.79ID:???
VSCode, Node.js をインストールする


に書いてある
Name_Not_Found [sage] 2019/02/27(水) 09:51:05.31ID:???

死ね
Name_Not_Found [sage] 2019/02/27(水) 12:23:13.23ID:???
arcのエンドアングル引数がよくわからないのですが、どういう仕組みかわかりやすい図はないでしょうか?
Name_Not_Found [sage] 2019/02/28(木) 06:53:05.98ID:???
描画してみれば一発で分かるでしょ
エンド アングル なんだから
Name_Not_Found [sage] 2019/02/28(木) 12:24:10.30ID:???
phaserってxampp必須なんですか?
ブラウザでも動作確認できませんか?
Name_Not_Found [sage] 2019/02/28(木) 12:43:22.44ID:???

ttp://https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl=ja
Name_Not_Found [sage] 2019/02/28(木) 17:13:39.46ID:???
↑いえ、サーバにうpする意味ってなんなのかなと思って
RPGなどだとPHPなどを使うことになるからでしょうか?
Name_Not_Found [sage] 2019/02/28(木) 17:41:45.45ID:???
多分同一生成元ポリシーに引っかかるんじゃない
ローカルだとそれでCanvasに画像を読み込めないとかあるから
Name_Not_Found [sage] 2019/02/28(木) 17:46:50.64ID:???
初めて知った概念でした
よくわからないけど、サーバを分けるってことですよね
ローカルもサーバだし
Name_Not_Found [sage] 2019/02/28(木) 18:46:52.13ID:???
xamppは全面的には信頼できないって事だけ覚えておけばたいていの場合は大丈夫
Name_Not_Found [sage] 2019/03/01(金) 05:59:50.12ID:???
はい
Name_Not_Found [sage] 2019/03/01(金) 06:00:26.79ID:???
javascriptのゲームのフレームワークで資料の多いものはなんですか?
phaserは英語はありますが、日本語はほとんどないです
環境設定もまともにできない
Name_Not_Found [sage] 2019/03/01(金) 06:18:38.59ID:???

でお勧めを聞いておいて、条件後出しで追加質問多過ぎ
初めから全ての要件を書いて質問しなさい
Name_Not_Found [sage] 2019/03/01(金) 06:27:27.69ID:???

生成元が違ってもCanvasには描画できる
Canvasがdirtyになるだけ
Name_Not_Found [sage] 2019/03/01(金) 07:01:29.37ID:???
xamppってhtdocs配下ならどこにおいてもいいんですか?
それでアップロードされた状態になっているんでしょうか?
Name_Not_Found [sage] 2019/03/01(金) 07:14:53.47ID:???
chromeなら--allow-file-access -from-filesするだけじゃねぇの
Name_Not_Found [sage] 2019/03/01(金) 07:29:08.47ID:???
xamppよりシンプルなものあります?
Name_Not_Found [sage] 2019/03/01(金) 07:29:58.82ID:???
apache
Name_Not_Found [sage] 2019/03/01(金) 08:06:58.41ID:???

RPGツクールMV
JavaScriptのゲームエンジンで比較的新しくてネット上に日本語資料とっても多い
エディタをインストールすれば環境設定いらない
Name_Not_Found [sage] 2019/03/01(金) 09:05:32.87ID:???
RPGに限定する必要はないんじゃない?
何も書いてないということは、何でもいいってことだ
Name_Not_Found [sage] 2019/03/01(金) 09:05:45.32ID:???
関係ないけどそれの一般ゲーム機向けのRPGツクールMV Trinityはバグ・不具合祭りで大炎上の後まだ延焼中だなワロタw
【Switch/PS4/XboxOne】RPGツクールMV Trinity★part19
ttps://rosie.5ch.net/test/read.cgi/gamerpg/1550321689/
●バグ・不具合
あらゆる場面での読み込みがフリーズと見紛うほど長い
(マップの大きさ・データベースの項目数などによって5〜10秒以上)
他、不具合の種類が多いので修正されるまで別項参照
Name_Not_Found [sage] 2019/03/01(金) 10:11:30.63ID:???

MAMP
Name_Not_Found [sage] 2019/03/01(金) 12:38:46.82ID:???
xamppの使い方やっと理解しました
phaserがんばります
英語しかないけど
Name_Not_Found [sage] 2019/03/01(金) 16:42:23.82ID:???

実行環境がブラウザだけだと、
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 があれば、
何も考えなくても、これでブラウザからアクセスできる

ttp://http://localhost:8080
Name_Not_Found [sage] 2019/03/01(金) 16:58:40.11ID:???

クソ言語の紹介やめろ
Name_Not_Found [sage] 2019/03/01(金) 18:05:05.36ID:???
nodeだと
npx serve .
Name_Not_Found [sage] 2019/03/01(金) 18:06:36.76ID:???

ワロタww
こっちのほうが簡単じゃねーかwww
Name_Not_Found [sage] 2019/03/01(金) 18:10:05.23ID:???
npxはワンタイム実行だから常用するなら
npm i -g serve
でインストールしといた方がいいな
これでどこでも
serve .
でカレントディレクトリがttp://http://localhost:8080でアクセスできる
159 [sage] 2019/03/01(金) 18:33:54.37ID:???
コマンドプロンプトで、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.98ID:???
ruby使いがなにか書く度に良い情報が上がるようになってて草
159 [sage] 2019/03/01(金) 20:28:34.10ID:???
そりゃ漏れは、10言語以上やってるから。
埋め込みSQL, PLC, HDL、電気電子回路とか、ゲームから産業機械まで、何でも作るから

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

漏れが見れば、原因がわかるんだがなw
Name_Not_Found [sage] 2019/03/01(金) 20:48:59.64ID:???

で、に完全敗北してると
何の意味もない人生だな
Name_Not_Found [sage] 2019/03/01(金) 20:50:20.46ID:???

ほーんw
で、改行コードは原因分かったのか?www
お前がruby『初心者』スレで『質問』してたwwwww
ttps://mevius.5ch.net/test/read.cgi/tech/1545421414/166
Name_Not_Found [sage] 2019/03/01(金) 20:57:06.52ID:???
rubyキチガイにエサを与えないで下さい
住人は迷惑してます
Name_Not_Found [sage] 2019/03/01(金) 22:40:00.68ID:???
jQueryでCSSのメディアクエリを書き換える方法はありますか?

例えばCSSで

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

となっている箇所のmax-widthの値をjQueryで書き換える方法はありますか?
Name_Not_Found [sage] 2019/03/01(金) 23:02:41.96ID:???

ttp://https://uhyohyo.net/javascript/5_2.html
Name_Not_Found [sage] 2019/03/02(土) 07:00:01.64ID:???

startangle0でendangleは360で円だと思うんですが、endangle350にしたら少し欠けた円になるかと思っていました
しかし結果が違いします
コレラはどういう意味なんでしょうか
Name_Not_Found [sage] 2019/03/02(土) 07:18:30.28ID:???
単位はラジアン
Name_Not_Found [sage] 2019/03/02(土) 10:48:05.55ID:???
ラジアンですね 調べます
Name_Not_Found [sage] 2019/03/02(土) 11:36:51.40ID:???
ttp://https://phaser.io/docs/2.6.2/index
javascriptってclassがないのではないのですか?
フレームワークまでjavascriptというわけではないのですかね
Name_Not_Found [sage] 2019/03/02(土) 12:03:15.29ID:???
僕ホイミン悪いスライムじゃないよ
Name_Not_Found [sage] 2019/03/02(土) 12:04:14.24ID:???

JavaScriptには他の言語の機能はなんでもあると
言えるぐらい言語仕様は進化している。
Name_Not_Found [sage] 2019/03/02(土) 12:39:15.78ID:???
ほんとにそうならTypeScriptは存在しない
Name_Not_Found [sage] 2019/03/02(土) 13:21:12.68ID:???

ないというのは昔の話ですか
どうも
Name_Not_Found [sage] 2019/03/02(土) 13:22:10.26ID:???
javascriptでゲーム作るメリットってなんですか?
steamにうpできるんですか?
Name_Not_Found [sage] 2019/03/02(土) 14:03:48.59ID:???

ブラウザ上で動かせる=端末による差が少ない
その代り重いし誰もプレイしないしデメリットの方が大きい
steamは知らん
C#とunityでええやろ
Name_Not_Found [sage] 2019/03/02(土) 15:39:28.83ID:???

・マルチプラットフォームへの展開
・支配的なストア(高額なロイヤリティ、コンテンツ制限)からの脱却
・プレイ前(ダウンロード、インストール)の心理的障壁の緩和
ガワネイティブにすりゃsteamもあるだろうけどあんまメリット感ないな
Name_Not_Found [sage] 2019/03/02(土) 16:22:39.59ID:???

誰もプレイしないとはなんのことですか?
Name_Not_Found [sage] 2019/03/02(土) 16:27:14.13ID:???
jsで作ったブラゲはチート対策が大変
Name_Not_Found [sage] 2019/03/02(土) 16:53:37.41ID:???
バックエンドがjsじゃいけないんですか?
Name_Not_Found [sage] 2019/03/02(土) 16:57:14.55ID:???
そういうのはjsとは言わずnodeと言う
Name_Not_Found [sage] 2019/03/02(土) 17:10:54.80ID:???
バックエンドなら別にいいよ
ただ、あんまりゲームには向いてなかった気がする
理由は忘れた
Name_Not_Found [sage] 2019/03/02(土) 19:14:33.14ID:???
phaserのインテリセンスって使えないんでしょうか
海外のフォーラムで質問してきたんですが、できない
Name_Not_Found [sage] 2019/03/02(土) 20:23:32.29ID:???
音楽とか、各プラットフォーム毎に、変換するのは大変だろ

その点、ブラウザゲームではブラウザが実行環境だから、楽
Name_Not_Found [sage] 2019/03/02(土) 20:43:48.66ID:???

音楽を変換って何?
もう今はmp4なら大体okだよ
Name_Not_Found [] 2019/03/02(土) 21:34:12.90:DnKk4kgP
<option>の個数が都度変動するため、<select>タグの中身が定まっていない場合
例えば<select>タグの中の3番目にある<option>を選択したいときって
どうすればいいですか?
<select>のvalueでvalueの値を直接指定する方法しかわからなくて
Name_Not_Found [sage] 2019/03/02(土) 22:02:08.46ID:???

<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.18ID:???

querySelectorでもjQueryでも'select > option:nth-of-type(3)'で取れなかったっけ
Name_Not_Found [sage] 2019/03/03(日) 00:33:39.31ID:???
jsがブラウザでキャッシュされずにページ開くと毎回ロードされるんだけどなんでだろ?

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

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


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


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

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

>>.197
8gbです
Name_Not_Found [sage] 2019/03/03(日) 08:10:58.21ID:???

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

とりあえずパーって作ってみたら?
個人的にはc#とunityの方が100倍楽と思うけど、
パズルゲームの場合重要なのはアルゴリズムだから言語なんて何でも良いだろう
Name_Not_Found [sage] 2019/03/03(日) 11:42:46.32ID:???
そういやそんな板もあったな
Name_Not_Found [sage] 2019/03/03(日) 13:00:43.08ID:???

すまんけどこれわかる人おる?
Name_Not_Found [sage] 2019/03/03(日) 14:36:49.63ID:???

キャッシュされてるかどうかってどう判断してるの
Name_Not_Found [sage] 2019/03/03(日) 14:52:43.08ID:???

いるよ
Name_Not_Found [sage] 2019/03/03(日) 18:02:42.21ID:???

ChromeDeveloperToolで確認しとるよ


教えてくんなまし!

ttps://imgur.com/N8o1WQu.jpg
Name_Not_Found [sage] 2019/03/03(日) 18:22:57.26ID:???
レスポンスヘッダはどうなってるの?
正直このスレで聞く案件なのか疑わしいんだけど
Name_Not_Found [sage] 2019/03/03(日) 18:24:27.38ID:???
パラメータを一回外して試してみて
Name_Not_Found [sage] 2019/03/03(日) 18:36:09.44ID:???

たしかに…
だけどとりあえずレスポンスヘッダはこれ

ttps://i.imgur.com/aQJO6WX.jpg
Name_Not_Found [sage] 2019/03/03(日) 18:37:26.38ID:???

パラメータ外してリロード後に数回リロードしたけどキャッシュされないっす!
Name_Not_Found [sage] 2019/03/03(日) 18:50:12.54ID:???
仮想domやモジュールバンドラー出てきて
htmlってもはや1つのjavascriptを読み込むだけのものになってきてるよね
Name_Not_Found [sage] 2019/03/03(日) 19:02:35.55ID:???
この数年寝てたの?
Name_Not_Found [sage] 2019/03/03(日) 19:04:05.88ID:???
キャッシュされない js
で検索したら
キャッシュさせない js
の結果しか出て来ない
Name_Not_Found [sage] 2019/03/03(日) 19:25:18.75ID:???

キャッシュを利用すると判断出来る情報がない
多分サーバー側の設定の問題だと思う
Name_Not_Found [sage] 2019/03/03(日) 19:38:47.37ID:???

なるほど
サーバー側調べてみるかあ
Name_Not_Found [sage] 2019/03/03(日) 19:39:03.30ID:???

そうなんだよw
Name_Not_Found [sage] 2019/03/03(日) 19:45:31.02ID:???

あ?
Name_Not_Found [] 2019/03/03(日) 22:43:25.81:xAf9z6Ft
お金ないです
参考書なしの独学で勉強なさってる方いますか?
参考にしてるサイトがあれば教えてください
今はイヌでもわかるJavaScript講座を眺めたり写経しています
Name_Not_Found [sage] 2019/03/03(日) 22:58:17.35ID:???
jsなんてとりあえずはclass付け外しするぐらいで十分
サイト作ったほうが良い
Name_Not_Found [sage] 2019/03/03(日) 23:13:56.47ID:???

JavaScript なら、Cocos Creator(Cocos2d-x), Phaser, Haxe。
Python 風なら、Godot

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

まあ、ゲーム製作板で聞いて
Name_Not_Found [sage] 2019/03/04(月) 07:42:51.42ID:???

ありがとうございます
RPG作りたいんですが、ウディタはこちらの環境だと文字サイズが小さすぎて辛いです
フレームワークとゲームエンジンならどちらがRPG向きなんでしょうか

ウディタは古い開発ツールで作成されている感じでしょうか
Name_Not_Found [sage] 2019/03/04(月) 07:55:40.72ID:???
やはり、条件後出しで質問してきたな
いつまでも、学習しない人だな
Name_Not_Found [sage] 2019/03/04(月) 09:18:25.46ID:???
ウディタなんて誰も答えてないんだが。
独り言ならチラシの裏にお願いしたいね。
Name_Not_Found [sage] 2019/03/04(月) 09:23:39.79ID:???

ゲーム制作板に行ってくれ
Name_Not_Found [] 2019/03/04(月) 13:54:36.36:f7xdnLxG
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.88ID:???

別のプロミスを返却するのは当然で何もおかしいこと無いんだけど
「prom1 = 〜」の中でprom1を返すのはおかしくね?
自分が完了するのを待機するから永遠に終わらない
Name_Not_Found [sage] 2019/03/05(火) 05:32:16.14ID:???
jsdocというのはコメントアウトとは異なるのですか?
他のファイルをインポートしたり出来るようですが
Name_Not_Found [sage] 2019/03/05(火) 06:59:51.36ID:???

大常識としてプロミスチェーンのループは認められてないでしょ
プロトタイプチェーンと同じく例外が発生する
Name_Not_Found [sage] 2019/03/05(火) 11:07:37.92ID:???

誰か回答するだろうと思って放置していたが誰も回答しないな。

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

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

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


には、「.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.82ID:???
> また、.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.71ID:???
japascriptでプログラム作ると逮捕されるってマジ?
Name_Not_Found [] 2019/03/05(火) 17:41:03.24:7A8gvhHV

詳しい解説ありがとうございます。
thenの中で新しいpromise作って返却したら、それまでのthenで繋がってる元々のプロミスチェーンが宙ぶらりんになって途切れてしまうものだと思ってました。
プロミスとプロミスチェーンの概念がイマイチ理解出来ないでいます・・・
Name_Not_Found [sage] 2019/03/05(火) 17:58:19.46ID:???

中学生が作ったブラクラの奴ね
見せしめでしょ、うざいプログラム作るなと
Name_Not_Found [] 2019/03/05(火) 18:33:50.64:gep4EaMM
ゲーム等のソフトを起動中、ボタンを押すとソフト上のテキストを取得してブラウザに表示する方法ってあるでしょうか?
Name_Not_Found [sage] 2019/03/05(火) 18:45:38.42ID:???

作ってすらおらずリンク貼っただけらしいww
Name_Not_Found [sage] 2019/03/05(火) 19:10:51.59ID:???

何がしたいのか全然わからん
Name_Not_Found [sage] 2019/03/05(火) 20:12:01.89ID:???

チェーンは非同期に動的に組み変わるものだからね
ただしチェーンが変わってもプロミスオブジェクトは変わらないからね
Name_Not_Found [sage] 2019/03/05(火) 20:19:22.27ID:???

すみません
例えばゲーム中
ttps://i.imgur.com/8SKokMQ.jpg
このような画面になった時、赤枠の文字列を取得したいのです
そして取得した文字列をhtml上に表示させたいです
Name_Not_Found [sage] 2019/03/05(火) 20:23:45.21ID:???

本当にしたいことはhtmlに表示させることじゃないと思うけど・・・

質問にそのまま回答するなら
これがjsで動いてるゲームなら開発ツールで簡単に取得できる
Name_Not_Found [sage] 2019/03/05(火) 22:43:24.94ID:???

プロミスチェーンという言葉を気にする必要はないよ

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

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

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.00ID:???
JQueryのresizableについて質問なのですが
マウスカーソルがポインターになる部分(つまめる部分)の範囲を大きくすることは可能でしょうか?
1~3ドット分ぐらいしかないのでつまみづらいなと思い大きくしたいです。
Name_Not_Found [sage] 2019/03/06(水) 00:06:35.50ID:???
>for文無限ループURL投稿で女子中学生が兵庫県警に補導
>補導されたのは、愛知県刈谷市に住む中学1年生の13歳の女子生徒で、
>警察によりますと、インターネットの掲示板に、不正なプログラムのアドレスを書き込んだ疑いがもたれています。
>このプログラムでは、クリックすると、画面の真ん中に「何回閉じても無駄ですよ〜」という文字や、顔文字などが表示され続けるよう設定されているということです。
Name_Not_Found [sage] 2019/03/06(水) 03:20:37.17ID:???

他人が作った、起動中のアプリに、外部からアタッチできないだろ。
そのアプリを自分で分析して改造するなど、しないと無理

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

iMacros と言う、ブラウザを自動操作するソフトもある
244 [sage] 2019/03/06(水) 03:34:26.76ID:???

アプリでも様々な種類があるから、
対応できるのは、ブラウザゲームなどのHTML アプリだけ

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

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

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

まだ会話を続けるなら、名前欄に、235 と入れて投稿して
Name_Not_Found [sage] 2019/03/06(水) 08:45:20.32ID:???

死ね
Name_Not_Found [sage] 2019/03/06(水) 09:16:30.52ID:???
rubyだけは絶対に使わないように
Name_Not_Found [sage] 2019/03/07(木) 07:10:09.29ID:???

現代ならスクリーンキャプチャして
文字解析WebAPI叩くとか現実的
Name_Not_Found [] 2019/03/07(木) 07:12:49.68:ahDydsPD
10数年ぶりにサイト作るんだけど、昔はJavaScriptを停止してるブラウザいっぱいあったけど、
今のブラウザは100%Javascript動くと思ってOK?
Name_Not_Found [sage] 2019/03/07(木) 12:28:15.90ID:???
そもそもjavascript動かしただけで犯罪になるのが日本だからな
逮捕されることを覚悟してやるしかねえわ
Name_Not_Found [] 2019/03/07(木) 13:38:59.97:RgmxSmXK
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.14ID:???
の最初のconstの行の末尾は ]; じゃなくて }; です…
Name_Not_Found [] 2019/03/07(木) 13:46:09.53:/wM/uMMX
ゼビオ行きたい
Name_Not_Found [sage] 2019/03/07(木) 15:42:08.00ID:???

こんなんは?てきとうだけど。
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.92ID:???

もっと柔軟に考えな
定義はできるだけシンプルのほうが良い
アクセスは構造化されていたほうが良い
この2つは両立できる
Name_Not_Found [sage] 2019/03/07(木) 21:22:34.99ID:???
本来順序がないものに配列使うのは好きじゃないなぁ
だからArray#entries/Object.entriesとかも好きになれない
Name_Not_Found [sage] 2019/03/07(木) 22:01:19.13ID:???
entiries系は走査が目的で順序なんて気にしないことの方が多いでしょ
Name_Not_Found [sage] 2019/03/07(木) 22:22:19.75ID:???

key/valueを配列で持ってるでしょ
そのことよ
Name_Not_Found [sage] 2019/03/07(木) 22:32:00.21ID:???
[key, value] of entries
とかすりゃいいだけじゃん
Name_Not_Found [sage] 2019/03/07(木) 22:35:49.82ID:???

new Map
Name_Not_Found [sage] 2019/03/07(木) 23:01:32.97ID:???

多分もうそれが嫌なんじゃない?
jsのArrayオブジェクトを静的型付け言語の配列と同じように考えてるっぽい
Name_Not_Found [sage] 2019/03/08(金) 01:30:24.56ID:???

え、違和感ない?一ミリも?
他にもMapに配列リテラル与えるのも違和感あるんだが
Name_Not_Found [sage] 2019/03/08(金) 06:59:30.07ID:???

全く違和感ない
むしろ、で無駄にキーを定義しているのが気になる
配列はキーがインデックスになっただけ
Name_Not_Found [sage] 2019/03/08(金) 07:22:04.29ID:???

> 他にもMapに配列リテラル与えるのも違和感あるんだが
「違和感がある」がキーのことか、引数に二次元配列を渡していることか、わからんが、既にある定義に違和感があるなら、Mapを漠然と理解している気になってるからなんじゃないかね
イテレータとか、理解してるか?
Name_Not_Found [sage] 2019/03/08(金) 12:39:13.11ID:???
ま、好みの問題だし[0],[1]のアクセスに全く違和感ないなら分かり合えんのでいいわ
デストラクチャリングできるから良いって問題じゃないし
ただesには妥協の産物もあるってことは理解しといたほうがいいぞ
Name_Not_Found [sage] 2019/03/08(金) 12:43:32.37ID:???
jsが妥協だらけなんてことは大前提の上での話だと思うけど……生まれからして開発者と会社間の妥協の産物やないか
Name_Not_Found [sage] 2019/03/08(金) 12:53:34.47ID:???
すべての言語が妥協だらけなんてことは大前提の上での話だと思うけど……
Name_Not_Found [sage] 2019/03/08(金) 12:58:23.28ID:???
我が人生に一片の妥協なし!
Name_Not_Found [sage] 2019/03/08(金) 15:23:48.72ID:???
ちなみにリリースしたてのreact hooks apiの使用例:
const [count, setCount] = useState(initialCount);
5ちゃんのスーパーハカーによると妥協の産物である。
Name_Not_Found [sage] 2019/03/08(金) 22:50:57.61ID:???
だからそれもデストラクチャリング前提の妥協の産物でしょ
Name_Not_Found [sage] 2019/03/08(金) 22:57:47.68ID:???
メモリ上に並ぶんだからどうやったって順序があるだろ
Name_Not_Found [sage] 2019/03/09(土) 09:28:00.16ID:???
違和感ある/なしの感想だけを求めて理由はどうでも良かったのか
すぐ共感を求める女性のような考え方だな
Name_Not_Found [sage] 2019/03/09(土) 10:13:36.21ID:???
これか?
 'a' : [ 正規表現, 文字列 ],

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

違和感なんて感じないけど?
Name_Not_Found [sage] 2019/03/09(土) 10:17:40.04ID:???
Mapや配列にした途端に違和感があるという不思議ちゃん
Name_Not_Found [sage] 2019/03/09(土) 10:56:59.23ID:???
はPHPの連想配列にも不満をいいそう
Name_Not_Found [sage] 2019/03/09(土) 11:49:05.06ID:???

考え方が狭いだけだと思うよ
[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.88ID:???
元は順序がどうとか言ってたから、arr[3]みたいな順序に依存したアクセスが気にくわないと言うのならわかる
Name_Not_Found [sage] 2019/03/09(土) 13:15:16.54ID:???
そもそも、new Mapの引数にはiterableが指定可能で配列限定ではないんだが
Name_Not_Found [sage] 2019/03/09(土) 13:20:11.46ID:???
o = { a:'b', c:'d', e:'f' }
new Map(Object.entries(o))
でいいじゃん
Name_Not_Found [sage] 2019/03/09(土) 17:50:19.98ID:???
iterableの考え方が出来てない人が「妥協の産物」と断じているだけだろう
Name_Not_Found [sage] 2019/03/09(土) 18:29:25.30ID:???
本人も両親の妥協の産物なのです
Name_Not_Found [sage] 2019/03/09(土) 23:39:17.89ID:???
一週間前に始めた超初心者です。

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.00ID:???

まず服を脱いでください
Name_Not_Found [sage] 2019/03/10(日) 04:49:06.65ID:???
質問です。

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.92ID:???

> このときyがundefinedになりますが、
button.onclick の関数を定義してるのはhello関数のスコープ
hello関数で定義しているyは参照できるはず
適当に補って試してみたが再現しない

変数のスコープ説明のためのソースっぽいけど、このソースそのままなの?
どこかtypoしてないか?
Name_Not_Found [] 2019/03/10(日) 09:11:19.04:Ny88Q30p
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.49ID:???

すいません、ちょっと違いました
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.90ID:???

それなら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.91ID:???
そして根本的にやるならこう

<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.26ID:???

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.09ID:???

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


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

更に一行で書いてみた。
個人的にはアロー関数は戻り値を使うべきだと思ってるので好きではないが
ttp://https://jsfiddle.net/pm4cqf75/
286 [] 2019/03/10(日) 15:33:27.62:Ny88Q30p

ありがとうございます
様々な書き方があって勉強になります
jQueryはまだ名前を知っている程度なのですが、とても興味を唆られました
Name_Not_Found [sage] 2019/03/10(日) 15:35:20.25ID:???
でした
Name_Not_Found [sage] 2019/03/10(日) 16:00:41.96ID:???

個別ボタンにaddEventlistenerするのではなく外側の要素でイベント取ってclass等で判別するとか
ttp://https://jsfiddle.net/o3s2mwp9/
Name_Not_Found [sage] 2019/03/10(日) 17:11:57.07ID:???

var btn1 = document.getElementById("btn1");
などはまるごと省略してよい
id属性をもつ要素はそのままグローバルプロパティとして現れる決まりがある
Name_Not_Found [sage] 2019/03/10(日) 17:22:18.21ID:???
と同等のことを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);
});

ttp://https://jsfiddle.net/3t1nv7kq/
Name_Not_Found [sage] 2019/03/10(日) 19:26:50.44ID:???
デザイナーってJavaScriptどらくらい理解してればいい?
Name_Not_Found [sage] 2019/03/10(日) 19:43:26.86ID:???
べつに必要ないんじゃない
Name_Not_Found [sage] 2019/03/10(日) 19:49:57.05ID:???

DOMに関してはなんでも出来ると思ってればいいけど、基本はclassの付け外しのみに抑え、
後はcssで全部やるようにすると思っておいたほうが良い
cssで出来る所をjsでやろうとすると途端に重くなる
Name_Not_Found [sage] 2019/03/10(日) 20:05:35.31ID:???

><a href="./time.html" target="frame_name" >現在時刻</a><br>

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

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

#テクノロジー犯罪
#四代目澄田会
Name_Not_Found [sage] 2019/03/11(月) 21:26:04.37ID:???

べつに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.03ID:???
jQueryなんて時代遅れって言われたんだけど今イケてるのって何?
Name_Not_Found [sage] 2019/03/11(月) 21:37:41.65ID:???
生JS
Name_Not_Found [sage] 2019/03/11(月) 21:39:38.12ID:???
jQueryのなんというかvbaくさい楽勝さがやめられん
アホでも書ける
Name_Not_Found [sage] 2019/03/11(月) 21:59:37.19ID:???

これが現実やで。周りに振り回されている人が、周りを振り回そうとしてるだけ

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

↓ 2年後

ttp://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.49ID:???

TypeScriptとか?
Name_Not_Found [sage] 2019/03/11(月) 22:41:08.48ID:???

Vueお勧めされたぜ
Name_Not_Found [sage] 2019/03/11(月) 22:48:02.83ID:???
色々言いたいことはあるけど
少なくとも古い新しいの問題では無いよ
何を作るかで決まる
Name_Not_Found [sage] 2019/03/11(月) 23:36:18.41ID:???
大規模サイトじゃなければ、jQuery で十分!
そこまで複雑じゃないから

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

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

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

昔、簡易HP作成サイトが当たって30000アカウントに登録してもらえた
・FWを除けばphpファイルは10ファイルぐらい
・30000アカウント集まって30000ページのサイト
これって大規模に当たる?
最初の開発は一週間ぐらいで終わった
Name_Not_Found [sage] 2019/03/12(火) 01:41:28.75ID:???

すげえなw
すげえ…ヒマなんだなw
Name_Not_Found [sage] 2019/03/12(火) 02:21:38.02ID:???

無職になって作ったエロアフィブログだ
サーバー設定、プログラミング、コンテンツ作成等メチャクチャ勉強になったな。今も進化中だ
儲けは少ないが一部マニアに非常に高い評価をいただいておる
海外のエロレビューサイトにも高レスポンスな良心的サイトとして紹介されたりもしたよ
Name_Not_Found [sage] 2019/03/12(火) 20:16:22.42ID:???
残念ながらエロにレスポンスは求められていない
Name_Not_Found [sage] 2019/03/12(火) 20:33:40.61ID:???

あほ、メチャクチャ求められるわ
Name_Not_Found [sage] 2019/03/12(火) 21:46:31.47ID:???
エロに重要なのは
広告で邪魔しないこと
クリック押したらすぐに表示されること
シークしたらすぐに移動すること
ダウンロードできること
Name_Not_Found [sage] 2019/03/12(火) 23:17:21.21ID:???
最近はわざわざダウンロードする必要ないって事に気づいた
Name_Not_Found [sage] 2019/03/12(火) 23:24:01.23ID:???
ダウンロードしないとぶつ切りにならん?
Name_Not_Found [sage] 2019/03/12(火) 23:30:54.86ID:???
それは回線が悪いかサイトが悪いか
じゃないかな
Name_Not_Found [sage] 2019/03/13(水) 01:45:22.73ID:???
私も夫に毎晩メチャクチャ求められてます
Name_Not_Found [sage] 2019/03/13(水) 06:32:02.29ID:???

いや、残念ながら求められていない
勘違いくん♪
Name_Not_Found [] 2019/03/14(木) 14:13:33.51:f4r4sHfI
アロー演算子と無名関数の使い分けを教えて下さい
foreachの中ではアロー演算子は使わない方が良いのでしょうか?
thisがwindowを差してしまいます

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

最終的には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.78ID:???
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.54ID:???

"あ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.40ID:???
normalize()を使おうぜ
Name_Not_Found [] 2019/03/14(木) 15:13:39.18:1lyNtq79

すごい!
半日ぐらい頑張った苦労は一体・・・w

ありがとうございました!!
Name_Not_Found [sage] 2019/03/14(木) 15:31:05.00ID:???

基本的にthisを使わない(挙動をコードを書いた時点で確定する)方針にしようぜって思想が根底にある
どうしても使いたいときは明示的にbindする
Name_Not_Found [] 2019/03/14(木) 15:39:59.51:1lyNtq79

ありがとうございます
思想に頭が追いつかない(@@;
もう少し勉強します
Name_Not_Found [sage] 2019/03/14(木) 15:49:26.14ID:???
> 基本的にthisを使わない(挙動をコードを書いた時点で確定する)方針にしようぜって思想が根底にある
ないから(笑)
Name_Not_Found [sage] 2019/03/14(木) 16:13:00.64ID:???

「使わない」じゃなくて「束縛しない」だな
すまん
Name_Not_Found [sage] 2019/03/14(木) 17:06:18.92ID:???

だからそういう思想があるわけじゃない。
thisが必要ないから結果としてそうなっただけ
Name_Not_Found [sage] 2019/03/14(木) 18:22:12.31ID:???
MDNにめっちゃ詳しく書いてあった
ttp://https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions

アロー関数はthisを持たないとか初めて知った
ちゃんとMDN読んどくべきだなあ
Name_Not_Found [sage] 2019/03/15(金) 05:47:18.43ID:???
持たない?むしろ持ってるのだと思うが
関数オブジェクトが作られるときに束縛される
Name_Not_Found [sage] 2019/03/15(金) 08:01:12.85ID:???
うんthis以外にも違いはあるけどthisについては定義時にvar hoge = (function() {〜}).bind(this)としてるようなもんだからな
Name_Not_Found [sage] 2019/03/15(金) 09:00:52.35ID:???

定義後にthisは変動しない仕様だった?
Name_Not_Found [sage] 2019/03/15(金) 09:30:17.18ID:???
アロー関数はthisを持たないってのは、別に私がそう解釈したわけじゃなくて
MDNにハッキリと書いてあるんだけど

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

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

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

function(func){
func()
}
Name_Not_Found [sage] 2019/03/15(金) 12:15:35.98ID:???
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.33ID:???

ありがとうございます!完全に分かりました。助かります…
Name_Not_Found [sage] 2019/03/15(金) 13:39:00.60ID:???
JavaScript のthis は、global のwindow などを指してしまうから、クソ仕様

だから、jQuery, Haxe では、this を修正している
Name_Not_Found [sage] 2019/03/15(金) 13:44:52.34ID:???
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.73ID:???

RubyにはRubyのやり方がある

はず
Name_Not_Found [sage] 2019/03/15(金) 14:01:38.57ID:???
やり方?
あるよねーいっぱいw
def 、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww
Name_Not_Found [sage] 2019/03/15(金) 14:03:38.05ID:???

逆ギレワロタw
Name_Not_Found [sage] 2019/03/15(金) 15:21:31.66ID:???
スクリプト内部でcreateElement('canvas')として動的にキャンバス要素を作成しているのですが、このキャンバスを右クリック、「名前をつけて画像を保存」を選択すると、すべてのファイル(*.*)となってしまいます。
jpegやpng形式で保存出来るようにしたいのですが、どうすればいいのでしょうか? どなたか教えて下さい。
使用しているブラウザはグーグルクロームです。
Name_Not_Found [sage] 2019/03/15(金) 15:31:35.89ID:???
保存ボタン付けるならやったことあるけど右クリックか。
どうやるんだろ?
Name_Not_Found [sage] 2019/03/15(金) 18:03:13.99ID:???

指してしまうってw
指す用に自分で書いてるだけなのに…

プログラムは思うようには動かんの
書いたように動くだけ
Name_Not_Found [sage] 2019/03/15(金) 20:26:29.49ID:???

thisは全ての関数内でキーワードとして動作する
だから「持つ」「持たない」というとそういう仕組みを持っているのかの話と
取られかねないのでオススメしない

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

> 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.21ID:???
コールバック関数って数Vに出てきた合成関数みたいな認識でいいんですかね?
Name_Not_Found [sage] 2019/03/16(土) 06:40:46.53ID:???

globalになるのは、非Strict Modeのみ
Name_Not_Found [sage] 2019/03/16(土) 06:56:55.24ID:???

違う
thisは関数の呼ばれ方によって決まって
「.」演算子によってReference内部型が作られるときに決まる
直に呼ぶとsloppy modeのときはglobalになるという決まりなだけ
簡単に言うとobj.func()と呼んだ時onjがthisになるというだけ
thisは第0番目の引数とでも思えば良い
Name_Not_Found [sage] 2019/03/16(土) 07:48:03.97ID:???

見た目はそうだけど、そう言って良いもんかどうか
まあ引数に関数渡して、そっちで実行してねってやつだよ

例えば関数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.93ID:???
数学の合成関数ってのは

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

すでに作ったもので言えば、DOM要素に横割り縦割り機能をつけ
要素を割ったら(要素の中に要素を作る)その中の要素にも縦横割り機能がつく、をループ(比率調整付き)
みたいなのは作ったのですが、垂直割りしかできないのでなんか今一です(キャプチャはブラウザの拡張)
要素を台形とかにできれば良いのですが・・
Name_Not_Found [sage] 2019/03/16(土) 20:36:49.93ID:???

JSの=は代入じゃない
所謂共有渡しにおける名前付け
Name_Not_Found [sage] 2019/03/16(土) 20:53:51.27ID:???
Assignment Operators
Syntax
ttp://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.23ID:???

そのまま作り続けろ
1年後行き詰まるからCanvasで作り直せ
10年後良いものができてる
冗談でなくおれはそうしてものづくりをしてきてる
Name_Not_Found [sage] 2019/03/16(土) 21:05:46.41ID:???

JSに参照とかはない(Reference型はあるが)

値は基本的に複製されることはなく
すべて同一存在の名前付けの連鎖でしかない
要するにお前が会社ではタッ君と呼ばれ、家ではターちゃんと呼ばれてるのと同じ
Name_Not_Found [sage] 2019/03/16(土) 21:26:22.98ID:???
あんまり触らないほうがよさそうだな
Name_Not_Found [sage] 2019/03/16(土) 21:39:16.61ID:???
変に他の言語に引っ張らなければJavaScriptはシンプルでわかりやすい言語だと思うけどなぁ
Name_Not_Found [sage] 2019/03/17(日) 00:27:38.62ID:???

何かの図形描画ツールを参考にすれば?
Name_Not_Found [] 2019/03/17(日) 10:46:23.51:oYnZimu7
今jsのロクでも無い部分ってあるのかな
昔はundefinedがうんちだった
Name_Not_Found [sage] 2019/03/17(日) 11:53:16.69ID:???
undefinedなんて実際に問題になることなかったろ
undefinedに何か代入するとかワザと壊しにかかってるんだからその結果壊れても問題ないでしょ
他にも置き換えられたら困るものなんて無数にあるんだし
Name_Not_Found [sage] 2019/03/17(日) 11:58:56.33ID:???
他の言語は知らんがjsは基本
昔動いてたコードは今も動く
動いてたうんちコードは今も動くはず
'use strict'がなければundefined = 'puyopuyo'も
Name_Not_Found [sage] 2019/03/17(日) 13:08:53.43ID:???
node.jsの使い途が分からない。
Name_Not_Found [sage] 2019/03/17(日) 14:31:49.75ID:???

使わなきゃいいじゃん
Name_Not_Found [sage] 2019/03/17(日) 16:50:28.45ID:???
使いみちが分からんものを使ってみるのも大事だぞ
そのときには使えなくても後々使うかもしれない
Name_Not_Found [] 2019/03/17(日) 17:18:44.38:RNotdYYW
node.jsは一度使っておいたほうが良い
Name_Not_Found [sage] 2019/03/17(日) 19:26:56.07ID:???
Node.js、コマンドラインでは毎日使ってるし
(ただ単にバッチファイルをダブルクリックしたら起動してファイルを生成してくれるってだけだけど)

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

ttp://https://jsfiddle.net/0vrcehsf/1/
Name_Not_Found [sage] 2019/03/17(日) 22:57:03.93ID:???
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:NS7cgoce
変数aがあるとして
aが負の数(-700など)だったなら-1に
aが正の数(329など)だったなら1に
変換したいのですが、どうすればいいですか?
Name_Not_Found [sage] 2019/03/18(月) 02:30:12.32ID:???
Math.sign(a)
Name_Not_Found [sage] 2019/03/18(月) 06:47:25.25ID:???
同期処理と非同期処理がよくわかりません
iframe使ったら勝手に非同期処理になるんですか?
Name_Not_Found [sage] 2019/03/18(月) 07:09:52.54ID:???
a>0?1:a<0?-1:0
387 [sage] 2019/03/18(月) 17:13:49.96ID:???

それでした!ありがとうございます

危うく みたいなことするところでした
Name_Not_Found [sage] 2019/03/18(月) 17:38:35.25ID:???
まぁ0きたときに微妙かもしれんが
Name_Not_Found [sage] 2019/03/18(月) 17:45:45.85ID:???
(a<0)*-1||1
Name_Not_Found [sage] 2019/03/18(月) 17:47:36.61ID:???
みたいなことしたら何かマズいのか?
Name_Not_Found [sage] 2019/03/18(月) 17:48:41.26ID:???
別にの方が性能や可読性高いわけでもなし、で何の問題もないと思うけど
Name_Not_Found [] 2019/03/18(月) 18:01:33.54:1/b8FMfj

はカッコイイけど俺の可読性が低いので使わないと思う
signとか距離求めるっ時ぐらいしか使わないよぉ
Name_Not_Found [sage] 2019/03/18(月) 18:09:51.31ID:???
signはIEで動かなかった思い出
今は大丈夫かな?
Name_Not_Found [sage] 2019/03/18(月) 18:12:19.37ID:???
ぶっちゃけIEよりfirefoxの方が上手くJS動かないこと多くない?
IE10以下は論外として
Name_Not_Found [sage] 2019/03/18(月) 19:06:34.58ID:???
signと三角関数のsinを勘違いしている幼稚園児が約一名いるなw
Name_Not_Found [sage] 2019/03/18(月) 19:18:56.62ID:???
Math.signumじゃいかんかったんかね
他にsignumをsignって書く言語あったっけ?
Name_Not_Found [sage] 2019/03/18(月) 20:00:11.87ID:???

これはどうして動くの
Name_Not_Found [sage] 2019/03/18(月) 20:16:12.55ID:???
3つしか演算子ないんだから
流石に自分でいろんな場合考えてみようぜ
Name_Not_Found [sage] 2019/03/18(月) 20:17:46.82ID:???

論理演算子 ||(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.89ID:???
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.77ID:???
(a>0)-(a<0)
が一番わかり易いでしょ
Name_Not_Found [sage] 2019/03/18(月) 20:44:14.80ID:???

すばらしい
Name_Not_Found [sage] 2019/03/18(月) 20:54:23.12ID:???
結局signのpolyfillやないかい
Name_Not_Found [sage] 2019/03/18(月) 21:05:02.19ID:???
それがどうかしたのか?
Name_Not_Found [sage] 2019/03/18(月) 21:08:59.06ID:???
なんとか10文字に小さくできた
-(a<0>0)|1
Name_Not_Found [sage] 2019/03/18(月) 21:10:26.37ID:???
と思ったら8文字でもいけたわ
-(a<0)|1
Name_Not_Found [sage] 2019/03/18(月) 21:49:44.05ID:???
7文字
a|1
Name_Not_Found [sage] 2019/03/18(月) 22:09:43.39ID:???
さぁ!6文字誰かいないかい?
7文字で終わりなのかい!?
Name_Not_Found [sage] 2019/03/18(月) 22:20:04.18ID:???

以外はa=0の時の挙動がsignと違うからポリフィルにはならないような
Name_Not_Found [sage] 2019/03/18(月) 22:55:03.55ID:???
a=-100000000000000000000000000;
がだめじゃん
まぁガバガバだけどそこそこ動けばいいレベルだと7文字限界っぽいな
Name_Not_Found [sage] 2019/03/18(月) 23:26:54.17ID:???
6文字
a/~a|1
Name_Not_Found [sage] 2019/03/18(月) 23:28:06.07ID:???

対応したぞ〜
a?/^-/.test(a)?-1:1:0
0のときの挙動もsignと同じだw
Name_Not_Found [sage] 2019/03/18(月) 23:36:18.95ID:???

これは安全w
遅そうだけど
Name_Not_Found [sage] 2019/03/18(月) 23:47:54.91ID:???
残念ながらNaNに対応できていない
Name_Not_Found [sage] 2019/03/18(月) 23:52:24.69ID:???
Math.sign含むMath関数はBigIntなどNumber以外の数値を受け付けないという致命的な欠点がある
Name_Not_Found [sage] 2019/03/18(月) 23:58:51.06ID:???
BigMathできるのかと思ったけどstandard libraryまで待つことになりそうだな
Name_Not_Found [sage] 2019/03/19(火) 00:12:45.40ID:???

対応したぞ〜
Number.isFinite(a)?a?/^-/.test(a)?-1:1:0:NaN
Name_Not_Found [sage] 2019/03/19(火) 01:06:23.68ID:???
それだとInfinityがNaNになる
Name_Not_Found [sage] 2019/03/20(水) 10:54:08.67ID:???
スマホ(android)でもjavaScriptの勉強がしたいのですが、使いやすい出力アプリ?はありますか?
ブラウザで出力できるのならそれでも良いのですが、なかなか難しいようで…
Name_Not_Found [] 2019/03/20(水) 10:59:09.00:9YLktb+I

使いやすくはないけど
ttp://https://codepen.io
ttp://https://jsfiddle.net/

スマホで無理に書くより、大人しく仕様を読むとかにとどめておいたほうが良いとは思う
Name_Not_Found [sage] 2019/03/20(水) 11:20:55.93ID:???

codepenを使わせていただきます。
ありがとうございました。
Name_Not_Found [sage] 2019/03/20(水) 11:55:51.31ID:???
なぜあえてそんな苦行を…
Name_Not_Found [sage] 2019/03/20(水) 12:09:30.47ID:???
ホリエモンの影響だろうな
スマホでなんでもやっていくスタイルには賛成だが
少なくともjavascriptのコーディングをスマホのみでやるのは数年早い
フォークしてコピペや改変くらいならまだしも
Name_Not_Found [sage] 2019/03/20(水) 12:46:23.84ID:???
俺はガキの頃ガラケーのフルブラウザから始めたぞ
大丈夫、できるよ
Name_Not_Found [] 2019/03/20(水) 13:13:03.49:9YLktb+I
紙とペンの方がマシなレベル
Name_Not_Found [] 2019/03/20(水) 20:59:06.50:/d+gyT6p
Blutoothキーボードだって繋げられるんだし、何も問題はない
Name_Not_Found [sage] 2019/03/23(土) 22:22:40.79ID:???
スマホでもIDEの補完並みのIMEがあればできるかもな あるのか?
Name_Not_Found [sage] 2019/03/24(日) 01:09:04.99ID:???
いらんでしょ
昔はメモ帳で書く人も多かったんだし
制約が多い中頑張ることは変な癖がつくけどそれはプラスにもなる
Name_Not_Found [sage] 2019/03/24(日) 11:35:11.49ID:???
すみません初心者の質問ですが
ある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.84ID:???

すみません
x というふうに書くとelementが要素でないのでstyleがundefinedになるので2行目の時点でエラーになってしまいますよね。
o というふうに書くとelementAが存在しない場合はelementが要素でなくなるのでstyleがundefinedになるので2行目の時点でエラーになってしまいますよね。
です
Name_Not_Found [sage] 2019/03/24(日) 14:39:16.19ID:???

十分簡潔だと思うけど……
Name_Not_Found [sage] 2019/03/24(日) 14:40:07.19ID:???
あーひょっとして
ver element = elementA?elementA:new Element()
みたいなことをしたいのかな
NullObject的な
Name_Not_Found [] 2019/03/24(日) 14:57:33.89:x5MsQlEw
ダミー要素を入れておくって手法も
Name_Not_Found [sage] 2019/03/24(日) 15:12:37.29ID:???
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.23ID:???
jQuery厨さんの出番のような気がするけど今日はいないのかな?
Name_Not_Found [] 2019/03/24(日) 19:23:39.54:H9PUHQN+
stykeってstrikeみたいでかっこいい
Name_Not_Found [sage] 2019/03/24(日) 21:41:37.21ID:???

呼んだ?w


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

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

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

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


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


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

なんだったら、テンプレを作ってみては?jQueryの有無とか
Name_Not_Found [sage] 2019/03/25(月) 04:24:51.14ID:???
Kotlin の、?: エルビス演算子みたいな奴だろ
Name_Not_Found [sage] 2019/03/25(月) 08:06:16.57ID:???
433ですありがとうございます

beautifyをかけた時に2行に分かれてしまうのがイヤだったり(そんな重要な部分じゃないのでソース上で場所とったり変に目立ったりして欲しくない)
同じ変数名を1度以上書きたくなかったり(そこが変数じゃなかったり変数名が長かった場合かさばるから)
して、まさにjQueryみたいに反応してほしいんですよね。むしろ直接
elementA.style.display="none";
と書いて、elementAが存在しなかったりエレメントじゃなかったりすれば何もせず素通りしてほしいぐらいなんです。
(elementA?).style.display="none"; とか
if(elementA).style.display="none";
みたいな書き方が(空想ですが)あればいいんですが。

そうですね、そんなふうに1行にまとめる書き方でelementAを2度書かなくてすむ書き方があれば知りたいです…
Name_Not_Found [sage] 2019/03/25(月) 09:10:57.61ID:???
?.
tc39で提案されてると思う
Name_Not_Found [sage] 2019/03/25(月) 09:18:32.06ID:???

どちらかといえば、変数 element が100%要素ノードになるようにコードを組むか、要素ノードでない場合にTypeErrorを返す方が厳密動作で俺は好きだけどな
(バリデーションするなら、Object.getPrototypeOfとか、nodeTypeとか、tagNameとか、いろいろあるが)

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

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

string.replace(/\d+/g, n => hash[n]);
Name_Not_Found [sage] 2019/03/25(月) 12:26:31.76ID:???
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.99ID:???

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.43ID:???

間違えた。訂正

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.81ID:???
みなさま有難うございます。凄く助かりました。お陰様で理解が出来ましたので、次に進めそうです。
Name_Not_Found [sage] 2019/03/26(火) 01:04:31.30ID:???
まあ、\d の所は、2桁以上にも対応するように、\d+ の方が良い

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

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

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

また、jQuery などでDOM から、return false を削除できるかも知れない
463 [sage] 2019/03/28(木) 00:23:25.97ID:???
漏れは、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:ZWPLcePw
ちょっと教えて欲しいんだけど、
これから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.30ID:???
何でもいい
というか一番素朴にキャッシュにSWを使ったら
SPAである必要もないことも多い
キャッシュにあるってことは高速に切り替えられるってことだから
無理に既存の平凡なサイトをSPAという名のpjax対応しても体験は変わらない
そういう面ではPWAとSPAは競合しうる概念

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

ttp://http://nowsmartsoft.atwebpages.com/

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


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

ttp://http://nowsmartsoft.atwebpages.com/demo1/index.html
ttp://http://nowsmartsoft.atwebpages.com/demo2/index.html
Name_Not_Found [sage] 2019/03/28(木) 18:25:57.30ID:???
言葉では分からないと思う。
実際に起動してみると、ブラウザの「中に」Windowが出てくるので
サイズを変更したり、タイトルバーをドラッグしたり、メニュー項目を
クリックしてみたり、その中にある 小さな Window をクリックして
文字を入力したりしてみて欲しい。
Name_Not_Found [sage] 2019/03/28(木) 18:26:25.44ID:???
間に合ってますんで…
Name_Not_Found [sage] 2019/03/28(木) 18:29:57.91ID:???
アクセス解析でわかるんだが、いまだ、誰一人もまともに起動してみて無いんだよ。
一度は見てから決めてくれよ。
Name_Not_Found [sage] 2019/03/28(木) 19:08:24.06ID:???

バカにしないでマーケティング少しは勉強しなよ。
適切な商品を、適切な顧客に。
あなたがやってるのは真夏のプールでコタツの押し売り。
そりゃ開かれないよ。
Name_Not_Found [sage] 2019/03/28(木) 19:15:39.79ID:???

そういうことか・・・。
オイラにはそういうことは理解しにくいのかも知れない。
Name_Not_Found [] 2019/03/28(木) 19:21:31.80:zC5VHeSC
>>472
んじゃ評価するけど・・・
・まず見た目がひどすぎる。使わずに評価するなってお前、こんな見た目で誰が使うんだ
・技術的には素直に凄いと思う
・需要がない。現状、widowsネイティブで作る物が思い浮かばない。ちなみに俺はちょっとしたツールならvbaとVB.NET使ってる
・時期もあまりに遅い。15-20年前なら、フリゲとブラゲ両方同時に作れるって触れ込みでかなり需要があったと思うけど、今はその手のライブラリは山程あるしメインはスマホアプリとsteam。もっと早ければDXライブラリの代わりになれたかも知れない
・そのためにこのツールを使おうって気にはならない事は、説明読めば大体分かるんだけど使ってみても意見が変わらなかった

ツールを作る事自体は悪い事じゃないけど、もう少しコンセプト(どんな物を作るのに向いているか)を考えた方が良いと思う
あと、「使って下さい、お願いします」ぐらいの気持ちで作らないと、ロクでもないものしか出来ないと思う
Name_Not_Found [sage] 2019/03/28(木) 19:25:38.23ID:???

有難う。色々と参考になる。
Name_Not_Found [sage] 2019/03/28(木) 20:14:48.01ID:???

よく頑張ってると思う
最初はいろいろどうかと思ったけど、考え直した

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

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

例えば今の見た目は確かに駄目だが、これを「足りない」と思うと失敗するパターン
むしろ変に拘ってるものを捨てようとして一番重要で地味な部分を着実に整備していったほうがいい
そしてアピールして回るのはいいけど、もし自ずと使ってくれる人がいるなら
その人の声を、見失わない範囲で最も大事にしたほうがいい
Name_Not_Found [sage] 2019/03/29(金) 01:09:42.77ID:???

ありがとう。
Name_Not_Found [sage] 2019/03/29(金) 09:46:38.41ID:???
当たり前かもしれないけど、HTML の textarea 要素って、native OS の
クリップボードからのコピーもペーストもできるんだね。
Name_Not_Found [sage] 2019/03/29(金) 14:09:56.00ID:???
OS以外のクリップボードがあるの?
リアル机の上に置いてあるやつのこと言ってる?
Name_Not_Found [] 2019/03/29(金) 14:12:27.43:zaSXTawa
>OS以外のクリップボードがあるの?
ソフト上で実装しようと思えば出来ると思うけど、めんどいからOS丸投げだわな
Name_Not_Found [sage] 2019/03/29(金) 14:25:32.11ID:???

ブラウザは、「ペースト」の方はセキュリティー上の問題から禁止している
ことが多い。JSからは原則的には、native OSのクリップボードの内容を
paste する事が出来ない。ところが、textarea には出来る。
JSからでも全く出来ないわけではなく、ユーザーが CTRL+V を押した場合
にのみは、textarea 以外でも出来るらしい。イベントが発生した場合に
のみは、他の要素、例えば <p> タグなどでも使えるようになっている。
Name_Not_Found [] 2019/03/29(金) 14:46:48.65:zaSXTawa
textareaのペースト知らなかった
でも、何か使えなくなってるっぽい?
ttp://https://qiita.com/kwst/items/8d9cd40e181761085325
Name_Not_Found [sage] 2019/03/29(金) 14:54:29.11ID:???

1人の私が、参考になった と評価しています
Name_Not_Found [sage] 2019/03/29(金) 17:32:57.85ID:???

document.execCommand('paste')
は使えなくなってるけど、それとはまた別の問題のはず。

何にもない場合に、JS から関数を呼び出してもペーストは出来ないようになっている。
ところが、ユーザーが CTRL+V キーを押した場合は、<p> タグにさえもペースト
できる方法が有る。<p> タグの attribute に名前は忘れたけど、
xxxx="true" みたいにしておく必要がある。すると、そのタグで、
pasteイベントが発生するようにもなるので、そのイベントを拾えば、
また、いろいろなことが出来るようになる。
Name_Not_Found [] 2019/03/29(金) 17:34:22.11:zaSXTawa

あぁ、そういう事か理解した
>何にもない場合に、JS から関数を呼び出してもペーストは出来ないようになっている。
これが出来ると思って色々触ってたわ
Name_Not_Found [sage] 2019/03/29(金) 17:54:29.07ID:???
こう書くらしい。
但し、<>括弧は半角から全角に変えてある:

<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.31ID:???
なにもない状態でクリップボード取得できたら完全にセキュリティホール
Name_Not_Found [sage] 2019/03/29(金) 18:02:43.51ID:???

htmlタグにcontenteditable="true"したらえらいことになったwww
Name_Not_Found [sage] 2019/03/29(金) 18:09:11.31ID:???
そうか、editable になるのはそれはそれで問題だね・・・。
Name_Not_Found [sage] 2019/03/29(金) 18:12:19.69ID:???
htmlに設定すると、サイトの各要素をdeleteやimgごとコピーしたりできるようになるのか
開発ツール無しでも結構色々出来て面白いなこれ
Name_Not_Found [sage] 2019/03/29(金) 20:28:05.34ID:???
いまさらかよ
Name_Not_Found [sage] 2019/03/29(金) 21:11:16.85ID:???

今だとnavigator.clipboard.readText()で取得できる
execCommandなんかはオワコン
Name_Not_Found [sage] 2019/03/29(金) 23:21:45.86ID:???

googleのVisBug拡張機能じゃダメか?
Name_Not_Found [] 2019/03/30(土) 01:39:18.06:+uiLpP+A
onloadイベントでajax使うとポップアップブロックされるんだけど
ページロード時にデータベースの項目とかどうやって表示するの?
Name_Not_Found [sage] 2019/03/30(土) 01:54:51.64ID:???
ポップアップとajaxは特に関係がない機能なので、
何か変なコード書いてる気がする
Name_Not_Found [sage] 2019/03/30(土) 01:56:25.63ID:???
コードを見せて欲しい 
Name_Not_Found [] 2019/03/30(土) 02:16:37.65:+uiLpP+A
指摘の通りべつのところでした

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:+uiLpP+A
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.85ID:???

辺りからアロー関数のthisについて話があるから読んでみて
俺もアロー関数は苦手で、いつも無名関数にしてる

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

関数宣言のfunctionを省いて
()と{}の間に=>を書く書式にしたものだよ

自分より上のスコープのthisが貫通するのが従来のfunctionとの違い
Name_Not_Found [sage] 2019/03/30(土) 21:41:52.17ID:???

高階関数を簡単に書くためのものだよ

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

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.62ID:???
無理にアロー関数を?使う必要はない
以上
Name_Not_Found [sage] 2019/03/30(土) 22:22:04.33ID:???
無理にでも使え
以上
Name_Not_Found [sage] 2019/03/30(土) 22:27:05.71ID:???
適材適所じゃよ
今は分からんでも一度使っておけば良い
Name_Not_Found [sage] 2019/03/30(土) 22:52:11.48ID:???

恥ずかしくないの?
Name_Not_Found [sage] 2019/03/30(土) 23:11:55.84ID:???
パンツじゃないから。
Name_Not_Found [sage] 2019/03/31(日) 00:05:18.16ID:???
JavaScript のthis は、文脈によって、Global(window) を指す事があるから、ややこしい

TypeScript は、これを踏襲しているけど、
Haxe, jQuery は、this の意味を変えている
Name_Not_Found [sage] 2019/03/31(日) 00:08:52.83ID:???
jQueryの$(this)を組み合わせるという手もあるのか
Name_Not_Found [sage] 2019/03/31(日) 00:11:40.91ID:???

jQがそうしたことが
ピュアJS知らない世代の中に
thisの理解を間違う層を一定数生んでいる、気がする
Name_Not_Found [sage] 2019/03/31(日) 00:19:31.59ID:???
間違いなくあると思う
Name_Not_Found [sage] 2019/03/31(日) 00:43:31.01ID:???

> jQuery は、this の意味を変えている

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

ttp://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.48ID:???
つまり、jQueryが悪いんじゃなくて、DOMが悪いんか
Name_Not_Found [sage] 2019/03/31(日) 00:57:54.81ID:???
一番ハマるのは、setTimeoutだろう。これもDOMだが
「Global(window) を指す事があるから、ややこしい」=setTimeoutぐらいしか
思いつかないんだが。あとは似たようなsetIntervalか。
Name_Not_Found [sage] 2019/03/31(日) 02:06:21.24ID:???
immediate省くな
Name_Not_Found [sage] 2019/03/31(日) 10:32:14.09ID:???
はどういう意味?
Name_Not_Found [sage] 2019/03/31(日) 10:35:47.98ID:???

変えてるよ
eachとかmapとかfilterとか、いくらでもあるよね
Name_Not_Found [sage] 2019/03/31(日) 10:41:49.12ID:???
thisがややこしい?
thisは関数が呼ばれるときに決まる第0の引数のようなものなんだから
呼ばれ方によって呼ぶ方の取り決めによって如何様な値も取りうることは当然だし
ドット演算子と関数呼び出しを組み合わせるとレシーバが来るという基本はあるけれど
別にthisはそれだけのために存在してるものではないし
変な固定観念を捨てて簡単に考えれば何も難しくないと思うけどな
Name_Not_Found [sage] 2019/03/31(日) 13:02:05.48ID:???
chrome ver73 64bit使ってるけどimport/exportがSyntax Errorになる
まだ未実装ということでwebpackだかbabelだかソース変換ツールが必要なのかな
Name_Not_Found [sage] 2019/03/31(日) 13:05:18.20ID:???
「○○難しい」って人に「全然難しくないよ!」って返す人は教える才能ない
とはいえ悪いことでもないので、人に教えるなんて無駄なことせずにガシガシコード書いてればいい。
Name_Not_Found [sage] 2019/03/31(日) 13:10:02.59ID:???

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.45ID:???
↑を見れば分かるように、
JavaScript標準自体がややこしいんだよね。
Name_Not_Found [sage] 2019/03/31(日) 13:15:54.69ID:???
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.12ID:???
ちなみに、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.89ID:???
ハイパー大雑把に言えば
thisはクラスのメンバ関数でクラス自体を参照するものだったじゃん?
Name_Not_Found [sage] 2019/03/31(日) 13:40:04.88ID:???

「俺の知っている言語では」という言葉が抜けてるよ
Name_Not_Found [sage] 2019/03/31(日) 13:50:56.28ID:???
全ては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.10ID:???

jQueryはthis値を変えてるって話だったよね?
forEachとeachのthis値を比較してみ
Name_Not_Found [sage] 2019/03/31(日) 14:55:05.05ID:???

そもそも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.62ID:???

君の個人的な「あり得ない」の話はしていない
jQueryがthis値を変えているのは事実
Name_Not_Found [sage] 2019/03/31(日) 15:29:04.93ID:???

その言い方だとjQueryがthisを変えてるのが悪いように見えるけど、
実際にはJavaScriptだってthisを変えているし、
むしろjQueryは正しい方向にthisを修正しているってことだろう?
Name_Not_Found [sage] 2019/03/31(日) 17:09:44.81ID:???

君が勝手に「良い」「悪い」の話しにすり替えているだけ
元々はでしょ?
Name_Not_Found [sage] 2019/03/31(日) 17:23:16.55ID:???
変えてないよ。
 ↓
そもそもthisを変えない。ということはありえないよ

???
Name_Not_Found [sage] 2019/03/31(日) 17:39:05.90ID:???
jQuery君は相変わらず、主張が矛盾だらけですね
Name_Not_Found [sage] 2019/03/31(日) 17:44:24.52ID:???

教える才能もクソもないよ
JSの細かな仕様を覚えろと説明してもしょうがないでしょ
だから変な固定観念を捨てて柔軟に捉えろと言ってる
thisが難しいのではなくて難しく考えてるだけ
そしてそこを柔軟に捉えるのが難しいってだけで
最初から第0引数と思ってれば何にも難しくない
そこが難しくなってしまってるのはもう仕方のないことだから頑張れとしか言えん
何か詳しく知りたいのなら聞いてくれれば具体的に細かく教えるが
細かく聞いてそれで理解できる人は自分で調べられる
だからとりあえず固定観念を捨てろとしか言えん
Name_Not_Found [sage] 2019/03/31(日) 18:29:44.25ID:???
キモイ
Name_Not_Found [sage] 2019/03/31(日) 18:53:41.17ID:???

それ俺が言ったんじゃないんですけどw


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

現に混乱の理由となっているthisがWindowとなるのは
JavaScript標準の話だっただろ
520 [sage] 2019/03/31(日) 18:59:59.96ID:???

自分は初めからjQueryの良し悪しなんて話してないんだけど
関係ないなら初めから関わってこないでよ
Name_Not_Found [sage] 2019/03/31(日) 19:02:47.80ID:???
俺ははじめからjQueryの方が良いという話をしている。
Name_Not_Found [sage] 2019/03/31(日) 19:10:31.71ID:???

何か少し勘違いしてね?

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

forEachは引数に渡された関数を繰り返すだけなんだから
何にもバインドされてない関数のthisがグローバルになるのも当たり前よ
Name_Not_Found [sage] 2019/03/31(日) 19:18:20.73ID:???
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.97ID:???

では、にレスしたのが間違いだね
Name_Not_Found [sage] 2019/03/31(日) 19:32:24.88ID:???

何か少し勘違いしてね?
イベントリスナーのthisArgがターゲット要素になるのは
ただ仕様でわざわざそうするように決まってるからで
何の自然で当然な動作でもなんでもないぞ
Name_Not_Found [sage] 2019/03/31(日) 20:12:51.07ID:???

へー面白い
Name_Not_Found [sage] 2019/03/31(日) 20:44:13.06ID:???

何か少し勘違いしてね?

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

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

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

だからってthisを変えたらダメでしょ
JavaScript のthis は、文脈によって、Global(window) を指す事があるから、ややこしい
Name_Not_Found [sage] 2019/03/31(日) 20:53:45.79ID:???
$('.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.59ID:???

アロー関数を使う場合はこうな。

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

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

ぜんぜん違うよw
Name_Not_Found [sage] 2019/03/31(日) 21:25:19.40ID:???

変わってないよ
ただのfunctionなんだからグローバルになるのは仕様通りだし自然じゃん

何から何に変わったと主張しているの?
Name_Not_Found [sage] 2019/03/31(日) 21:26:41.89ID:???

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.64ID:???
これも例の一つ。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.76ID:???
しかもの場合、forEachの中のthisはundefined。
Global(Window)じゃない。
使い方によってthisがコロコロ変わる
Name_Not_Found [sage] 2019/03/31(日) 21:38:01.10ID:???

ああわかった、何がわかってないのかが

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

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

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

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

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

だから変わってるのではなくて
addEventListenerの引数関数のthisと
forEachの引数関数のthisは
もともと別のものなんだよ
Name_Not_Found [sage] 2019/03/31(日) 21:42:45.57ID:???

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

じゃあ。

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

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

関数ごとにバラバラであっていいっていうのが、
JavaScriptの正しい仕様なんですか?
Name_Not_Found [sage] 2019/03/31(日) 21:59:47.95ID:???

バラバラじゃないって
何のメンバでもない、どのオブジェクトのメソッドでもない関数で
thisキーワードが参照されたときは一律グローバル

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

foo();

var bar = {
foo: foo
};

bar.foo();

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

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

補足
function foo(){}

は関数文

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

は関数リテラル
なんで正確にはちょっと違うんだけど、まあ捨て置け
Name_Not_Found [sage] 2019/03/31(日) 22:24:15.51ID:???

コールバック関数がthis束縛するはずない
一度、コードを書いてみろ
Name_Not_Found [] 2019/03/31(日) 22:37:34.12:rWRvnw+C

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

これはちょっと乱暴w
Name_Not_Found [] 2019/03/31(日) 22:37:49.34:rWRvnw+C
だった
Name_Not_Found [sage] 2019/04/01(月) 00:21:49.34ID:???

> ただ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.82ID:???
ようするに、DOM要素にaddEventListenerで登録した
イベントハンドラの中でthisがDOM要素になっているのは、

DOM要素が複数のイベントハンドラを呼び出す時に
わざわざthisをDOM要素に変更して呼び出しているはずだ
Name_Not_Found [sage] 2019/04/01(月) 00:29:02.24ID:???

そりゃそうよ。コールバック関数自体はどのオブジェクトにも
紐付いてないのだからthis束縛はされていない

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

漏れは、そういう認識です
Name_Not_Found [] 2019/04/01(月) 01:30:33.76:Io+GUhRr

callとかapplyとか知らんの?
Name_Not_Found [sage] 2019/04/01(月) 01:44:17.16ID:???

知ってるよ?addEventListenerは
callとかapplyを使って、関数を呼び出す時に
thisを変更してから呼び出してるよねって話をしてる
Name_Not_Found [sage] 2019/04/01(月) 06:07:30.29ID:???
グローバルのメンバ云々は全く関係なくて
thisArgがundefinedのときsloppy modeではglobalThisに置き換えられてただけ
Name_Not_Found [sage] 2019/04/01(月) 06:41:07.52ID:???

jQuery君がそれを理解してくれれば解決なんだがね
568 [sage] 2019/04/01(月) 08:10:47.92ID:???

俺がそのjQuery君なわけだがw
Name_Not_Found [sage] 2019/04/01(月) 11:02:31.57ID:???

アホか
バインドするメソッドなんだからそうするに決まっとろうが
Name_Not_Found [sage] 2019/04/01(月) 12:30:27.39ID:???

もお前なら、と矛盾してる
Name_Not_Found [sage] 2019/04/01(月) 13:01:46.00ID:???

> バインドするメソッドなんだからそうするに決まっとろうが

バインドするメソッドとは?
それはどういう意味で、
どこにそういう仕様であると書いてあるんですか?
Name_Not_Found [sage] 2019/04/01(月) 14:38:53.39ID:???
変なの湧いてるなあ
なんか名前書いてよ
興味のある人は読むし
ない人はNGすっから
Name_Not_Found [sage] 2019/04/01(月) 14:52:34.84ID:???
まずは言い出しっぺが名前を書くように
Name_Not_Found [sage] 2019/04/01(月) 15:18:31.39ID:???
自覚あってワロタ
Name_Not_Found [sage] 2019/04/01(月) 15:19:53.04ID:???
じゃなくて名前。はよ
Name_Not_Found [sage] 2019/04/01(月) 15:38:30.56ID:???
"バインドするメソッド" で検索しても何も見つからんわ
むしろ一番最初にjQueryでてきた
オレオレ用語使ってないで、ちゃんと説明しろ
Name_Not_Found [] 2019/04/01(月) 18:56:34.87:WoIas1Og
ttp://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.49ID:???
加算代入演算子
ttp://https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators#Addition_assignment
Name_Not_Found [] 2019/04/01(月) 20:27:20.84:WoIas1Og

リンクありがとうございます
解決しました。
Name_Not_Found [sage] 2019/04/01(月) 20:41:20.75ID:???
が敗れたか
Name_Not_Found [sage] 2019/04/01(月) 21:51:05.16ID:???
バインドするメソッドってなに?
Name_Not_Found [sage] 2019/04/01(月) 21:58:59.79ID:???
jQuery君は言葉狩りで話を逸らそうと必死だな
Name_Not_Found [sage] 2019/04/01(月) 23:04:20.22ID:???
言葉狩りじゃないなぁ

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

それが答えられないなら、理由がないってことになる。
Name_Not_Found [sage] 2019/04/01(月) 23:08:44.94ID:???
偉そうなことはに反論出来てからいおうな
Name_Not_Found [sage] 2019/04/02(火) 01:14:19.26ID:???

他意は無いんだが
質問者が未解決のままレス続ける時は
名前欄に最初の質問のレス番号入れてくれんかね
文脈わからなくなるし
混ざって他の質問者が流されたりしちゃうこともあるから

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

うん、でもaddEventListenerは複数指定できるから
要素に直接紐づけてるわけじゃないんだよね。

便利だからわざわざthisを要素自身にして呼び出してる
便利だから。jQueryも同じ。便利だからそうしている。
Name_Not_Found [sage] 2019/04/02(火) 12:31:14.19ID:???
つまり、
$('.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.91ID:???

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.74ID:???
じゃあ他人にできることができないことがある
お前はクソということだな
Name_Not_Found [sage] 2019/04/02(火) 21:21:24.17ID:???

昔はthisは(他のクラスベース言語だとインスタンスを表すのでそれに習って)
オブジェクトでないといけないという縛りがあったので
undefinedのときは仕方がないのでglobalThisに置き換えられてただけ

ES5になってその制限を緩くして
strict modeだとthisがプリミティブになることができるようになった
Name_Not_Found [sage] 2019/04/02(火) 22:19:18.56ID:???
javascript人気だけど仕様がクソすぎるよな
Name_Not_Found [sage] 2019/04/02(火) 22:26:07.77ID:???
いや。客観的に見てクソ加減は著名な言語の中で平均以下だよ
Name_Not_Found [sage] 2019/04/02(火) 22:44:24.58ID:???
JSで未だに問題になり得る隠しきれない残念な部分ってtypeof演算子くらいでしょ
Name_Not_Found [sage] 2019/04/02(火) 23:02:49.98ID:???

うん。それはそれでいいんだけど、
JavaScriptのforEachでthisがundefinedもしくはwindowになる(strictかどうかで挙動が変わる)
という仕様は何が便利なのかなーって話
Name_Not_Found [sage] 2019/04/02(火) 23:35:05.59ID:???

人の話聞いてる?
forEachなんかでのthisValueは当然メソッド呼び出しでもないんだしundefinedでしょ
ただsloppy modeだとundefinedがglobalThisに置き換えられるってだけ
置き換えられる理由は前述の通り
Name_Not_Found [sage] 2019/04/02(火) 23:46:04.80ID:???

返すものがないから

歴史的な問題でもあるから
詳細は90年代からESに至るまで仕様書順に読んできて
ここでこんなに引っ張るような話でもねえよ
仕様なんだから
Name_Not_Found [sage] 2019/04/02(火) 23:53:56.37ID:???
ん?ただ一言、forEachでundefinedになってることに
メリットはないって言ってくれれば良いんだけど?
Name_Not_Found [sage] 2019/04/03(水) 01:29:23.51ID:???

foreachにアロー関数渡す理由が無い
foreachには無名関数渡せば良いだけで、
変な事してる人に配慮して言語仕様を貶める事は俺には出来ないな
Name_Not_Found [sage] 2019/04/03(水) 06:24:40.86ID:???

お前言ってることがおかしいよ
undefined以外だったらおかしくてむしろデメリットになり得るでしょ
thisは何にでも使えるとはいえ「THIS」なのだから
ライブラリやらが何をどうしようと勝手だが標準には秩序というものがある
Name_Not_Found [sage] 2019/04/03(水) 06:53:42.50ID:???
こいつ第10引数は何故いつも開いてるんだ!
undefinedの代わりに何か便利なものを提供しろ!
とか言いそうだな
Name_Not_Found [sage] 2019/04/03(水) 09:31:07.53ID:???

> undefined以外だったらおかしくてむしろデメリットになり得るでしょ
どんなデメリット?

> thisは何にでも使えるとはいえ「THIS」なのだから
forEachの中では、必ず undefined (またはWindow)になるんです。
「THISなのだから」とはどういう意味?
Name_Not_Found [sage] 2019/04/03(水) 09:32:02.44ID:???

便利なものが思いつかないなら、何も提供しなくて良いのでは?
Name_Not_Found [sage] 2019/04/03(水) 11:59:54.22ID:???
やっぱjavascriptの仕様がおかしい
おかしくなかったら揉めない
Name_Not_Found [sage] 2019/04/03(水) 12:39:21.11ID:???

必ずなるなんて誰も言ってないでしょ
forEachやmapは第二引数で指定できるでしょ
コールバックのthisが何になるかなんてJSの秩序では自明でないでしょ
それに利便性も含めて指定できるようになってるんだから
指定されていない時はundefinedが自然でしょ
それが嫌なら指定すればいいだけなのだから
Name_Not_Found [sage] 2019/04/03(水) 13:10:19.03ID:???
> 指定されていない時はundefinedが自然でしょ

いいえ、コールバックのthisが何になるかなんてJSの秩序では自明ではありません。
Name_Not_Found [sage] 2019/04/03(水) 13:24:50.00ID:???
まあ呼び出しが側が自由に設定出来るからな。jQueryがそうしてるように。
※ただしアロー関数は除くww
Name_Not_Found [sage] 2019/04/03(水) 14:34:05.92ID:???

なんかおかしいことあるか?
Name_Not_Found [sage] 2019/04/03(水) 14:42:05.30ID:???

あと揉めてるっていうか
変な人が居着いちゃってるだけのような気が…
Name_Not_Found [sage] 2019/04/03(水) 14:46:24.68ID:???

自明じゃね?
何かのオブジェクトのメソッドとして実行されないから
thisキーワードを参照しても返すべきオブジェクトがないわけで
Name_Not_Found [sage] 2019/04/03(水) 15:03:32.42ID:???

だからそのクラスベース脳捨てろよ。
hoge(function() {console.log(this);});
//=> undefined
が自明だって?バカいうな。
hogeの定義はこうだ!
function hoge(cb) {cb.bind('うんこ')();}
だから、
//=> undefined
じゃなくて、
//=> うんこ
なんだよこのうんこ!
jQueryだってやってることは同じだバカ!
Name_Not_Found [sage] 2019/04/03(水) 15:04:39.23ID:???

日本語でok
Name_Not_Found [sage] 2019/04/03(水) 15:19:00.20ID:???

> 何かのオブジェクトのメソッドとして実行されないから
> thisキーワードを参照しても返すべきオブジェクトがないわけで

その理屈だと、DOMのイベントは、
DOM要素オブジェクトのメソッドとして実行されないから
undefinedになるべきなんですよ。
Name_Not_Found [sage] 2019/04/03(水) 15:22:50.44ID:???
そろそろまとめてくれないか
Name_Not_Found [sage] 2019/04/03(水) 15:22:52.93ID:???

お前足りん子か?
デフォルト値がない限り引数に指定できるものを指定してない=undefinedと扱われるのはJSの秩序だろうが
Name_Not_Found [sage] 2019/04/03(水) 15:24:00.52ID:???

DOMはあくまでDOMで外様の仕様だから
そこには別のルールがある
Name_Not_Found [sage] 2019/04/03(水) 15:26:05.17ID:???

お前の言う「JSの秩序」によると

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

undefinedとして扱われるべきということになってしまう
Name_Not_Found [sage] 2019/04/03(水) 15:48:03.08ID:???
jQueryはあくまでDOM用のライブラリだから
DOMの仕様に準拠している。と考えればいいのか
Name_Not_Found [sage] 2019/04/03(水) 16:06:48.43ID:???
なんにも分かってないのな
恥ずかしい奴
Name_Not_Found [sage] 2019/04/03(水) 16:11:54.15ID:???
自称わかってる君、登場。何も言えずに、退場。
Name_Not_Found [sage] 2019/04/03(水) 17:14:50.60ID:???

ん?
addEventListenerが特別な振る舞いするってだけじゃね?
なぜ特例を挙げる?
Name_Not_Found [] 2019/04/03(水) 17:20:17.27:3PPhuC92
もう質問じゃねーじゃん
言語の仕様と歴史の問題だから
仕様書読んでよ
ttp://http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf
Name_Not_Found [sage] 2019/04/03(水) 18:08:36.79ID:???

一つ上くらい読め
足りん子
Name_Not_Found [sage] 2019/04/03(水) 18:10:26.05ID:???
JavaScriptのforEachでthisを要素にする方法ないのかな?
Name_Not_Found [sage] 2019/04/03(水) 18:54:20.51ID:???
今日書かれた内容くらいは読んでから書こうぜ
Name_Not_Found [sage] 2019/04/03(水) 19:02:49.56ID:???

これでええやろ。
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.75ID:???

[5, 4, 3].forEach(Map.call, function() { console.log(this); });
5
4
3
Name_Not_Found [sage] 2019/04/03(水) 19:41:10.96ID:???
は分かるけど
がまったく分からない…
バカにも分かるよう解説してほしい
Name_Not_Found [sage] 2019/04/03(水) 20:03:03.80ID:???
forEachの第二引数はthisの指定だって既出じゃん
Name_Not_Found [sage] 2019/04/03(水) 20:20:48.57ID:???
それだけじゃは全然分かんないんだけと…
バカ舐めてない?
Name_Not_Found [] 2019/04/03(水) 20:44:42.80:3PPhuC92

まずMap.callが何かググってみると良いと思う
Mapオブジェクト便利だよ
Name_Not_Found [] 2019/04/03(水) 20:51:38.49:DDwik/cB
分からないときは変数を解決しつつステップを追っていったらいいだけでは?
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.11ID:???

> forEachの第二引数はthisの指定だって既出じゃん

だから、その第二引数でどうやって、各要素がthisとなるように
指定するんですか?って話なんですが
Name_Not_Found [sage] 2019/04/03(水) 22:09:35.97ID:???

どうやってって指定するのかって
が例出してるじゃん
Name_Not_Found [] 2019/04/03(水) 22:10:37.53:3PPhuC92

さんが丁寧に説明してくれてるじゃないか
callが連続するのが分かりづらいかも知れんけど
落ち着いて一個ずつ読んでみ
Name_Not_Found [sage] 2019/04/03(水) 22:42:42.04ID:???
読んだ結果俺はでいいや…
だと読み直すたびに毎回そこで引っ掛かる自信あるw
Name_Not_Found [] 2019/04/03(水) 23:25:13.34:Ed8aFiP/
すみません、ちょっと質問なのですが、javascriptはスタックサイズの変更は出来ないのでしょうか?
再帰関数を実装したらスタックが溢れてしまいます。スタックサイズを設定出来るコンパイラオプションみたいなものはないのでしょうか?
Name_Not_Found [sage] 2019/04/03(水) 23:46:27.85ID:???
スタックサイズを無限にでもしたいのか?
無限に必要だろ。お前のコードは。
Name_Not_Found [sage] 2019/04/04(木) 00:19:20.05ID:???

わからんのなら黙っとけ
Name_Not_Found [sage] 2019/04/04(木) 00:23:21.44ID:???
使用上末尾呼び出しでスタックは消費しない
それでも溢れるのはエンジンの実装がまだだから
各エンジンにスタックサイズ指定のオプションがある


普通はそこまで無理くりthisを使おうとしないほうが
よっぽどいくらでもスマートに書く方法があるから
なぜ第一引数で与えられるものをわざわざthisを使おうとする
考え直したほうがいい
Name_Not_Found [sage] 2019/04/04(木) 00:36:39.01ID:???
× 使用上末尾呼び出しでスタックは消費しない
○ 末尾最適化が可能なように書いた場合に限り、末尾においてスタックは消費しないだけで
末尾以外でスタックは消費するし、末尾最適化が可能じゃない書き方をしていれば、それもスタック消費する
最初からループで書けばすむものを、再帰で書いてコンパイラにループに戻してくれることを期待するという無駄なことをしている。
Name_Not_Found [sage] 2019/04/04(木) 00:54:37.99ID:???

最後の意見は超同意。再帰が話題になるたび思う。
Name_Not_Found [sage] 2019/04/04(木) 00:56:50.91ID:???

jQueryディスw
thisだけにwwなんちゃってwww
Name_Not_Found [sage] 2019/04/04(木) 06:58:14.10ID:???
Aでやりたいんだという人にそんなの無理無理Bでやれというのは老害だと思う
本当に不可能なことをしようというのであればそれは不毛だよと教えてあげないといけないが
エンジンの設定などで動き得る範囲なら
書きたいように書けるように設定するほうが正しい判断だと思う
今の時代人間が機械に合わせるより機械を人間に合わせるほうが絶対に良いことで
JSなんてエンジンが頑張ってくれるおかげでいろいろ好きなように楽に書けてる言語の代表なのだから
Name_Not_Found [sage] 2019/04/04(木) 07:17:15.02ID:???
それは手段を目的にしちゃってるのでは?
Name_Not_Found [sage] 2019/04/04(木) 07:27:49.42ID:???
一人で仕事するならどうかいたって自由
Name_Not_Found [sage] 2019/04/04(木) 10:41:05.79ID:???

むしろ今は人が機械に合わせた方が恩恵大きそうな気が
Name_Not_Found [sage] 2019/04/04(木) 12:35:25.19ID:???
第一引数でとれるものを、彼はなぜthis束縛に拘ってるの?

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

これでいいじゃん
this束縛したら通常の動作ではなくて直感的じゃないし、第二引数でthis束縛する場合に改修コストが余計にかかるし、メリットがまるでない
つーか、ループ処理でthisで束縛してるのはjQueryだけだし、それが当然としたり顔でいわれても困るわ
Name_Not_Found [sage] 2019/04/04(木) 12:48:02.04ID:???
jQueryからそれが当たり前のように始めると危ないよと様々な人が様々に言ってきた害が現実に起きてるだけとは言え
それでもforEachに一々躓くのは異常としか言えないね
Name_Not_Found [sage] 2019/04/04(木) 13:16:57.26ID:???

だと思う
それにバグも少なく見通しがよくなる
FWの設計を無視して無理矢理色々やろうとすると歪が出てくる
Name_Not_Found [sage] 2019/04/04(木) 14:24:07.26ID:???

> jQueryからそれが当たり前のように始めると危ないよと様々な人が様々に言ってきた害が現実に起きてるだけとは言え

なんか害起きてるか?
お前が害害いってるだけだろう?
Name_Not_Found [sage] 2019/04/04(木) 15:18:51.12ID:???
jQueryのデザインが、絶対!
javascriptのforEachは、間違っている!
Name_Not_Found [] 2019/04/04(木) 15:55:22.62:l5iaeRCP

でどうしろと
Name_Not_Found [sage] 2019/04/04(木) 17:57:59.73ID:???

そんなことを言ってるのはお前だけ

DOMが要素をthisに変更してるように
jQueryも要素をthisにしてるだけのこと
Name_Not_Found [sage] 2019/04/04(木) 18:37:03.60ID:???

addEventListenerとforEachは全く違う
Name_Not_Found [] 2019/04/04(木) 18:48:39.01:l5iaeRCP

で俺らにどうしろと
JSの仕様に文句があるならECMAに言ってよ
Name_Not_Found [sage] 2019/04/04(木) 19:16:52.41ID:???

jQueryも全く違う。thisをどうするかは設計者が決めること
Name_Not_Found [sage] 2019/04/04(木) 19:17:11.00ID:???
訂正 あて
Name_Not_Found [sage] 2019/04/04(木) 19:27:20.92ID:???

お前もうレスしてくるな
これまでの話の流れのニュアンスを理解できないというのならよくいるただのアスペだが
お前は1レス中の隣接する行すら関連付けて理解できないのだから
そんなAI以下の知能でよく今まで生きてこれたな
Name_Not_Found [sage] 2019/04/04(木) 19:30:25.51ID:???

お前が、存在しない「害」をある前提にして洗脳しようとするからだろ
「害」なんて無いんだよ。有るならどんな「害」か書けるはずだが。
それともお前は、これが正しいんだ!とかいうお前の思い込みを主張するつもりか?w
663 [] 2019/04/04(木) 19:41:56.15:vTBEFf7i

俺も同意見だから、異論はない
彼はjQueryの仕様がECMAにないのはおかしいという論調だったからな


全くその通り
jQueryの仕様をESに持ってくるなと
そもそも、NodeList#forEachでもthis値を書き換えてないわけで、addEventListener云々は採用する理由にもならん
Name_Not_Found [sage] 2019/04/04(木) 19:51:29.10ID:???
foreachのindex仕えばいいだけの話が、何でこんなにこじれるのか意味不明
Name_Not_Found [sage] 2019/04/04(木) 19:51:38.67ID:???

お前頭湧いてるのか?
jQuery流にドップリ浸かったせいでJSの基礎構文に違和感を感じて
無理やりにでもthisを活用しようとすることが害でなくてなんなんだ?

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

それを受け入れられないというのならただの病気
お前と話すことはない
Name_Not_Found [sage] 2019/04/04(木) 19:53:38.50ID:???

第二引数(index)を使わずとも、第一引数(値)で参照出来るぞ?
Name_Not_Found [sage] 2019/04/04(木) 19:57:25.62ID:???

スマン、普通に間違えた
もちろんvalueねw
Name_Not_Found [sage] 2019/04/04(木) 20:01:37.35ID:???
こういうのを想像して、新人さんかわいいなぁと思ってしまった

arr = [1,2,3];
arr.forEach(function(i){
console.log(arr[i-1]);
})
Name_Not_Found [sage] 2019/04/04(木) 20:03:34.26ID:???
俺なら新人でもそんなコードを書く奴は見込み0と判断する
Name_Not_Found [sage] 2019/04/04(木) 20:11:45.82ID:???
のコードを考え出した人は、である(笑)
Name_Not_Found [sage] 2019/04/04(木) 20:13:14.02ID:???

引数の位置的に、jQuery脳も疑う
Name_Not_Found [sage] 2019/04/04(木) 20:17:07.79ID:???

> 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.15ID:???
jQuery脳・・・jQueryもJSのやり方もありです。だってjQueryはJSだもの
アンチjQuery脳・・・jQuery脳のやつはjQueryが絶対だって思ってるはずだ!

これな
Name_Not_Found [sage] 2019/04/04(木) 20:24:20.92ID:???
js vs jQuery ファイッ! → jQueryでも大差ない → アンチjQuery沈黙
ワンライナーで戦争終わらせたぞ
Name_Not_Found [sage] 2019/04/04(木) 20:37:07.43ID:???
jQuery IE
同じような存在
未来には不要
Name_Not_Found [sage] 2019/04/04(木) 20:38:14.93ID:???

棲み分けの話なら、jQuery流はjQueryの世界で好きにやればいい
標準APIにjQueryの流儀を持ってくるな、という話
Name_Not_Found [sage] 2019/04/04(木) 20:39:24.77ID:???
○○はオワコン

本当にオワコンになるのは、開発元がやめたときで
他人が言ってるだけ(=オワコンなってほしい、なってくれー)が
現実のものになることはないのです。COBOLとかね。
Name_Not_Found [sage] 2019/04/04(木) 20:39:55.51ID:???

アンチjQuery脳・・・標準APIにjQueryの流儀を持ってこようとしているはずだ!
Name_Not_Found [sage] 2019/04/04(木) 20:55:33.34ID:???
ならアロー関数を使わないべき論はやめて欲しいね
Name_Not_Found [sage] 2019/04/04(木) 20:59:29.45ID:???
アロー関数を使わないなんて誰が言ってるんだ?
むしろ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.86ID:???
アンチjQuery脳・・・jQuery脳のやつはアロー関数を使わないべきだって思ってるはずだ!

ほんと、これだよなw
Name_Not_Found [sage] 2019/04/04(木) 21:05:26.74ID:???

では、逆に聞くが、はそういう奴ではないのか?
Name_Not_Found [sage] 2019/04/04(木) 21:07:26.66ID:???

ぜんぜん違うだろw
Name_Not_Found [sage] 2019/04/04(木) 21:15:05.48ID:???
geolocation APIの位置情報が偽装されているかを検出したいのですが。
Name_Not_Found [sage] 2019/04/04(木) 21:29:46.76ID:???
ストーキングすれば簡単だろ
Name_Not_Found [sage] 2019/04/04(木) 21:32:08.32ID:???

なぜ?
Name_Not_Found [sage] 2019/04/04(木) 21:38:41.67ID:???
無理だろ
iphoneは知らんけどドロは好き放題変えられる
Name_Not_Found [sage] 2019/04/04(木) 22:08:18.94ID:???

標準APIにjQueryの流儀を持ってこようとしてないから
Name_Not_Found [sage] 2019/04/04(木) 23:13:26.33ID:???

COBOLがオワコンになってないと思う方がヤバイ
VBは勿論、PascalやFortranですらオワコンでなくなってしまう
Name_Not_Found [sage] 2019/04/04(木) 23:18:25.39ID:???
それらはもう十分に萎みきって一部分野だけで残り滓が生き残ってる段階だからオワコンとは言わんでしょ
まだまだ活力はあるけど今まさに萎みだしてる段階をオワコンと言うと思う
Name_Not_Found [sage] 2019/04/04(木) 23:19:02.61ID:???

そういうのはディープラーニングでできる
Name_Not_Found [sage] 2019/04/04(木) 23:20:39.89ID:???

出来るわけねーだろハゲ
Name_Not_Found [sage] 2019/04/04(木) 23:25:15.01ID:???

俺なんて、1件だけ変わった客いて
今でも月に1回くらいActionScript書いてるんだぜ
すごくね?
Name_Not_Found [sage] 2019/04/04(木) 23:29:34.91ID:???
flashとかの環境もうどっか行ったな
案件来るんだろうか
699 [sage] 2019/04/04(木) 23:33:24.29ID:???

まーないでしょう
そもそもブラウザもデフォでは実行できなくなってきてるし
これ、俺と客以外、誰が見るんだろう…って思いながら作業するんだぜ
Name_Not_Found [sage] 2019/04/04(木) 23:38:07.70ID:???
標準技術の上に作られたjQueryが使われなくなることはないのだった
Name_Not_Found [sage] 2019/04/05(金) 05:43:28.18ID:???

できるよ
パターンを判別するのは得意
Name_Not_Found [sage] 2019/04/05(金) 06:42:16.26ID:???

Array#forEachでthisが変わらないとおかしいという論調には読めないのかね?
Name_Not_Found [sage] 2019/04/05(金) 06:52:19.89ID:???
そいつ脳足りんだから読めないよ
ほっとけ
Name_Not_Found [sage] 2019/04/05(金) 06:55:38.66ID:???

意味不明。なんでそうなるんだかw
そのコードはforEachでthisが変わるという例だろうが
Name_Not_Found [sage] 2019/04/05(金) 06:56:43.46ID:???

パターンを判別するのが得意であって
位置情報の偽造を判別できてるわけじゃないですね
Name_Not_Found [sage] 2019/04/05(金) 07:13:40.21ID:???

最近は少ないサンプルでも学習できるようになってるから
最初幾らか人力も使ってサンプルを用意して
運用しながら人間が判別しつつサンプルを増やしていけばいいんだよ

「偽装」っていうのはそういうものだから
もしかすると端末のGPSの精度がおかしいから外部アタッチメントと
アプリ使ってAndroidの位置情報置き換えてるかもしれないけど
そういうのは「偽装」とは言えないしね
Name_Not_Found [sage] 2019/04/05(金) 08:28:33.22ID:???

ああ、「アロー関数の動きを期待している」といいたいのか?
どちらにしても、「ここのthisはWindow ← 【thisが変わってしまっている】」といっている時点で標準APIに文句付けているようだが

そもそも、の質問に対しては的外れだったな
Name_Not_Found [sage] 2019/04/05(金) 08:51:54.08ID:???


ドロの位置偽装はアプリ使うぞ
Name_Not_Found [sage] 2019/04/05(金) 19:46:37.51ID:???

だから仮に端末のGPSモジュールをバイパスしてるかどうかが分かったとしても
それで「偽装」が分かるわけではない
「偽装」っていうのはヒューリスティックに判断するしか無いということ
Name_Not_Found [sage] 2019/04/05(金) 20:01:23.37ID:???

以前はそうだったけど
最近はディープラーニング的な解析が出来るようになって
位置情報のような社会行動学的偽装はわりと見破りやすくなった

って話じゃね?
Name_Not_Found [sage] 2019/04/05(金) 20:03:48.29ID:???
それをうまく逆手に取れば自然な位置偽装工作も可能だろう
Name_Not_Found [sage] 2019/04/06(土) 00:15:23.15ID:???
あちこちのサイトで見かけるpopper.js って何をしているのでしょう?
Name_Not_Found [sage] 2019/04/06(土) 00:17:26.32ID:???
そのくらい調べろボケ
Name_Not_Found [sage] 2019/04/06(土) 00:33:43.84ID:???

調べて分からないのです 観察上はBootstrap使う時につきものみたいですが
Name_Not_Found [sage] 2019/04/06(土) 06:52:54.05ID:???
移動してるとセルラーやWifiの電波状況、方位や加速度センサーの値が変化する
Name_Not_Found [sage] 2019/04/06(土) 07:12:03.07ID:???


JavaScript を自ら学ぶ人のための質問スレッドです。
Name_Not_Found [sage] 2019/04/06(土) 07:18:51.27ID:???
popper.jsぐぐっても分からない?
ならプログラミングの適性ないから止めてけ
Name_Not_Found [sage] 2019/04/06(土) 10:53:44.12ID:???
ProgateのJavaScript終わったんだけど次何すればいいんだろ
ttp://https://youtu.be/RKcFIg1yHOI
↑こういうの真似しようとおもったけどどうなんだろ
Name_Not_Found [sage] 2019/04/06(土) 14:57:17.08ID:???
昔作ったサイトからPopper.jsを外しても動作変わらんかったw
Name_Not_Found [sage] 2019/04/06(土) 16:53:59.55ID:???
設計とかのことを考えたら結構その動画はヤバい気がするけどどうなんだろ
Name_Not_Found [sage] 2019/04/06(土) 18:11:57.01ID:???
どうなんだろって質問なんだろうか?どうなんだろ
Name_Not_Found [sage] 2019/04/06(土) 18:31:43.36ID:???
RPGなんて恐れ多い物に手を出そうとする奴は
間違いなく将来強い拘り持って孤立するへんくうな奴だけど
JS仙人になれる資格を有する
そういう奴は多少変な教え方されようがされまいが
すぐに自分の心理へとたどり着けるので問題はない
Name_Not_Found [sage] 2019/04/06(土) 18:32:18.94ID:???
心理→真理 ね
Name_Not_Found [sage] 2019/04/07(日) 11:31:02.53ID:???
JavaScriptで共有の値渡しだの参照の渡しだのいろいろ言われてるのは結局どういうことなのですか?
Name_Not_Found [sage] 2019/04/07(日) 12:08:31.05ID:???
なにが?
Name_Not_Found [sage] 2019/04/07(日) 22:57:21.90ID:???

単一存在にいろんな場所からいろんな名前が付けられていくイメージをするといいよ
Name_Not_Found [sage] 2019/04/08(月) 22:22:10.02ID:???
<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.21ID:???
「canvas 画像 合成」で検索すれば?
Name_Not_Found [sage] 2019/04/09(火) 00:22:04.60ID:???
個人的にはcanvas一個にまとめたほうが楽で軽い気がする
Name_Not_Found [sage] 2019/04/09(火) 06:16:41.96ID:???
OffscreenCanvasをいくつも持っておいて1つのCanvasにputImageでいいじゃん
Name_Not_Found [sage] 2019/04/09(火) 17:28:10.05ID:???
javascriptってブラウザを使ってローカルで開くだけで動作するるですか?
Name_Not_Found [sage] 2019/04/09(火) 18:07:06.32ID:???
はい
Name_Not_Found [sage] 2019/04/09(火) 18:07:27.93ID:???
webページ右クリック名前をつけて保存→開いてみたらええで
Name_Not_Found [sage] 2019/04/09(火) 22:26:33.63ID:???

すみません、もうちょっと詳しくお願いします
Name_Not_Found [sage] 2019/04/09(火) 22:32:57.53ID:???
canvasって裏側でレイヤー複数持つ事できないの?
合わせてダブルバッファリングみたいにして一括描画、みたいな
Name_Not_Found [sage] 2019/04/10(水) 04:34:15.00ID:???
すぐ上に方法書いてあるじゃん
Name_Not_Found [sage] 2019/04/10(水) 05:24:18.22ID:???
canvas には、Win32 API の、BitBlt() みたいな、
転送元から転送先へのブロックコピー機能は、無いの?

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


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

ブラウザのコンソール画面で、コード片を実行するか、
VSCode, Node.js をインストールしておいて、VSCodeからNode.jsで実行するか
Name_Not_Found [sage] 2019/04/10(水) 06:52:30.97ID:???
見えないCanvas好きなだけ用意して好きなだけdrawImageで合成して見えるCanvasにdrawImageすればいいじゃん
上品にOffscreenCanvasとcommit()でやってもいいし
Name_Not_Found [sage] 2019/04/10(水) 10:08:26.03ID:???

>canvas には、Win32 API の、BitBlt() みたいな、
>転送元から転送先へのブロックコピー機能は、無いの?
>ダブルバッファリングみたいに、一旦、裏側のバッファへ、
>幾つかのシーンを合成して描いておいてから、ディスプレイに切り替えるような

あるよ。
ttp://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.24ID:???
誤:反転してから、danvas に過去戻すみたいなこと。
正:反転してから、canvas に描き戻すみたいなこと。

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

同じハズ。
Name_Not_Found [sage] 2019/04/10(水) 13:21:37.78ID:???

知らないなら黙っているということができないのか

オフスクリーンキャンバスを使った
JavaScriptのマルチスレッド描画
- スムーズなユーザー操作実現の切り札
ttp://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.84ID:???

それで、どこが違うんですか?

BitBltとどこが違うか聞いてるんじゃないよ?
の「それ」とどこが違うのかを聞いてる。
Name_Not_Found [sage] 2019/04/10(水) 14:20:38.90ID:???

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

でもたしか、OffscreenCanvas自体が新しい仕様なので、まだ、使えない
環境の人が多すぎて、使うのには速すぎるんじゃなかろうか。確か。
Name_Not_Found [sage] 2019/04/10(水) 14:27:30.65ID:???
ttp://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.53ID:???
Magnific Pop Up
Owl Carousel

2つセットで使われていることが多い。
この時それぞれどんな動作しているのかいまだにわからない。
Name_Not_Found [sage] 2019/04/10(水) 18:54:30.16ID:???
owlってかなり古いぞ
Name_Not_Found [sage] 2019/04/10(水) 20:26:00.82ID:???

今のWebには「off-the-main-thread」って言葉があるんだよ
高速化云々ではなく、メインスレッドでやる必要の無いことは別のスレッドでやろうという
勿論理由もあるけど、「Extensible Web」のような原理主義ポリシー

OffscreenCanvasはそうした使い方もできるし、単純にcreateElement('canvas')で仮の要素を作るという
ちょっと気持ち悪さをなくすためだけにも使える
Name_Not_Found [sage] 2019/04/10(水) 20:50:55.69ID:???

なんのためのレイヤーなのか
Name_Not_Found [sage] 2019/04/10(水) 21:28:34.85ID:???

ほう。今時は何が流行りですか?
Name_Not_Found [sage] 2019/04/10(水) 22:37:01.44ID:???
OffscreenCanvasなんぞ使わなくても
ゲームしか想定してないのか
CADのレイヤーを想定したらいいし元からそういう話
Name_Not_Found [sage] 2019/04/11(木) 06:14:48.12ID:???
OffscreenCanvasなんぞってOffscreenCanvasは別に大層なもんじゃないぞ
レイヤー用途でも普通に気軽に使えるもの
Name_Not_Found [sage] 2019/04/11(木) 08:48:37.32ID:???
ではセーラーマーズのコスプレで踏みつけて欲しい。
Name_Not_Found [sage] 2019/04/11(木) 10:07:49.46ID:???
複数のCanvasを結合し、1つの画像として保存したい
ttp://https://teratail.com/questions/25283

てのがあったけど、これできる?
最後「;」入れても何も表示されないのだが
Name_Not_Found [sage] 2019/04/11(木) 10:34:50.77ID:???
createImageがonload待たずにimage返しちゃってるからじゃね
Name_Not_Found [sage] 2019/04/11(木) 12:47:13.04ID:???
バカすぎ
わざわざdataURLとか取らなくてもdrawImageには直接Canvas指定できるっつうの
Name_Not_Found [sage] 2019/04/11(木) 14:21:10.21ID:???
ドメインが別だと使えないぞ
Name_Not_Found [sage] 2019/04/11(木) 15:56:16.80ID:???

ではバカではない実際のコードの見本を
言っておくがその記事の筆者ではない
Name_Not_Found [sage] 2019/04/11(木) 18:55:50.18ID:???

もしお前が知りたければそれはお前が調べることだから
つうか調べる必要すらない、全部言ってるんだから
その上でただコードを要求するとかお前失礼な奴だな
だから俺は意地でも見本は書かない
何が嬉しくてバカがバカ言って大バカになる手伝いをしないといけないんだ
Name_Not_Found [sage] 2019/04/11(木) 19:33:40.95ID:???
日本語が変な人がバカバカ言ってて草
Name_Not_Found [sage] 2019/04/11(木) 19:48:41.33ID:???

俺がバカと言ってるのは俺の基準によるものだから
お前が俺をどう思おうが関係ないこと
Name_Not_Found [sage] 2019/04/11(木) 19:59:05.42ID:???
なんでこんなにイキり屋が多いのか?
Name_Not_Found [sage] 2019/04/11(木) 20:56:12.99ID:???
誰か俺のいきり立ったチンポを見てくれ
Name_Not_Found [sage] 2019/04/11(木) 21:30:41.08ID:???

馬鹿に分かるように説明するのが
すんなりできない馬鹿だから
Name_Not_Found [sage] 2019/04/11(木) 22:01:20.05ID:???

それだけjsは誰にでも出来る簡単な言語って事なんだ
758 [sage] 2019/04/11(木) 22:17:41.26ID:???

それだった
Name_Not_Found [sage] 2019/04/11(木) 22:29:24.01ID:???
よくある
canvasは罠が多い
Name_Not_Found [sage] 2019/04/11(木) 22:39:18.74ID:???
canvasの罠ではないしcanvasの罠はDOMなどに比べても相当少ない
Name_Not_Found [sage] 2019/04/11(木) 23:03:01.38ID:???
canvasってあんまり使わないから動作確認がし辛い
俺だけ?
Name_Not_Found [sage] 2019/04/11(木) 23:21:15.04ID:???
webglをスクラッチから思い出しながら100行程度最小限用意するのは面倒だが
2dなんて10行程度でしょ
Name_Not_Found [sage] 2019/04/12(金) 09:57:52.15ID:???
スマホ持ってないんだけど、input タグでの 仮想キーボード(?)を
Chromeで Emulate 出来る?
開発者モードのスマホエミュレートモードで「Nexus 5」モードにして、
Landscape keyboard をチェックしてみると、仮想キーボードの画像自体
は表示できたんだけど、そのボタンをマウスでクリックしても input タグには
文字が入力されない。
Name_Not_Found [sage] 2019/04/12(金) 11:51:41.04ID:???
エミュレートのinputやselectなど入力に関するものはサッパリダメだ
Name_Not_Found [sage] 2019/04/12(金) 12:17:17.64ID:???
例えば、Fire 7 タブレットとか、Wifi接続専用(?)のAndroidタブレットを
買った場合、USBケーブルでPCのデータを転送してフォルダやファイルの内容を
見たり出来る? 例えば、html を転送したりとか。
あと、PCで使ってるモデムとかから有線 LAN ケーブルを使っての Web ページ
の閲覧とかも出来るのかな?
Name_Not_Found [sage] 2019/04/12(金) 12:28:59.84ID:???

何でもできる
Name_Not_Found [] 2019/04/12(金) 14:19:19.97:cHAK/luG
お金がほしいです。どなたか恵んでくださいませ。
運気が上がり、きっと幸せになります。天国に行けます、多分。
Name_Not_Found [sage] 2019/04/12(金) 16:33:52.55ID:???
document.createRange();で作れるRangeオブジェクトってどういう時に使うの?
MDN読んでもよく分からんので使ったことある人教えてください。
Name_Not_Found [sage] 2019/04/12(金) 16:52:36.60ID:???
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.83ID:???
jsライブラリの表はクソ重いからcanvasがいい
Name_Not_Found [sage] 2019/04/12(金) 20:23:40.94ID:???

奇遇ですね。
私もお金が欲しいのです。どうか恵んで下さい。
きっと、金運が上がります。
Name_Not_Found [sage] 2019/04/12(金) 21:15:49.18ID:???

最初は、Chromeがインストールされて無いらしいんだけど、
Google Play をインストールした後、APKファイルをDLした
らインストールできるの?

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

integrity= 

って必要なの?
Name_Not_Found [sage] 2019/04/13(土) 00:40:41.66ID:???
いらない
Name_Not_Found [sage] 2019/04/13(土) 20:03:37.26ID:???
スライドパズルのサンプルはないでしょうか?
いろいろ調べたんですが、動かないものが多くて困ってます
ドットインストールのものは途中から有料のようです
Name_Not_Found [sage] 2019/04/13(土) 20:51:25.47ID:???

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

入力は、4つの矢印キーで
Name_Not_Found [sage] 2019/04/14(日) 06:16:34.34ID:???
絵をバラバラにすることなど考えたらCanvasでやる方が良いと思う
Name_Not_Found [sage] 2019/04/14(日) 07:18:40.52ID:???

CSSスプライトでもっと簡単にできるだろ
Name_Not_Found [sage] 2019/04/14(日) 07:20:43.99ID:???
15パズルは「解なし」がありえるんで
それをどうやって判定するか or
「解なし」にならないシャッフルを行うか
が肝だろう
Name_Not_Found [sage] 2019/04/14(日) 07:25:35.35ID:???
godot pythonでやってたんですが、チュートが少なかったのでとりあえずこっちゃきました
Name_Not_Found [sage] 2019/04/14(日) 08:30:24.30ID:???
絶対に正解にたどり着かない、盤面を判定するのは、難しいから、

最初に、正解の盤面を作って、
そこから10〜20回ほど、ランダムに動かしてから、問題を作る
Name_Not_Found [sage] 2019/04/14(日) 10:39:41.21ID:???

日本語の説明がないと結局ロジックがよくわからなんだです
Name_Not_Found [sage] 2019/04/14(日) 11:33:49.77ID:???
ドットンストールにあるなら一ヶ月だけ金払って有料動画見まくれればいいんじゃないの
Name_Not_Found [sage] 2019/04/14(日) 11:40:14.36ID:???
これぐらいなら書けたけど、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.70ID:???

知能が低すぎる・・・
Name_Not_Found [sage] 2019/04/14(日) 12:21:05.23ID:???

生のチュートください
Name_Not_Found [sage] 2019/04/14(日) 13:04:07.87ID:???
他のパズルに変えた方がよい

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

ttp://https://jsfiddle.net/gyj1mo9L/4/
Name_Not_Found [sage] 2019/04/14(日) 17:08:43.83ID:???
誰か教えて(´;ω;`)
Name_Not_Found [sage] 2019/04/14(日) 17:12:58.47ID:???

判定する必要はない
完成状態からランダムに十分な回数動かせばいいだけ
Name_Not_Found [sage] 2019/04/14(日) 17:16:48.64ID:???

うおすげぇ
Name_Not_Found [] 2019/04/14(日) 17:21:28.97:c7X3oOAW

なぜ同じことをレスしたのか
Name_Not_Found [sage] 2019/04/14(日) 17:25:08.50ID:???

レイアウト崩れるけど、サーバ使わないとだめなん?
Name_Not_Found [sage] 2019/04/14(日) 17:30:58.90ID:???
概念的なロジック教えてください
それが英語だとわからない
Name_Not_Found [sage] 2019/04/14(日) 17:33:21.62ID:???

手元ではファイルプロトコルでも壊れないけど
SCSSをCSSにコンパイルしてないとかじゃないの?
Name_Not_Found [sage] 2019/04/14(日) 17:56:17.89ID:???
これだけわかりやすいコードあるのにロジックがわからないってどういう事だ
コードに全て書いてあるじゃないか
Name_Not_Found [sage] 2019/04/14(日) 18:05:58.78ID:???

どうも
SCSSッテ物があることを初めて知りました


パズル製作がはじめてのど初心者なので、、、
Name_Not_Found [sage] 2019/04/14(日) 18:19:09.32ID:???

わからんのなら黙っとけ
Name_Not_Found [] 2019/04/14(日) 18:30:31.66:yoZEsvZb
ttp://https://pastebin.com/mxadnK5i

SCSSをCSSにして、JSにコメントもつけた
あとは自分でやれ
Name_Not_Found [sage] 2019/04/14(日) 18:41:58.82ID:???
js.jsみたいなファイル名はエラーの原因になりますか?
正常に読み込めなかったです

ありがとぅございますぅ
Name_Not_Found [sage] 2019/04/14(日) 18:41:59.79ID:???
wikipediaに日本語でアルゴリズム書いてあるだろ…
Name_Not_Found [sage] 2019/04/14(日) 18:56:23.49ID:???

神!
Name_Not_Found [sage] 2019/04/14(日) 19:23:55.06ID:???
ごくまれにホントにデキる人が来るから2ちゃんねるって侮れない
Name_Not_Found [sage] 2019/04/14(日) 19:39:58.67ID:???

ファイル名に意味が無いのは避けたほうが良い
main.jsやcommon.jsなどの名前を使う
Name_Not_Found [sage] 2019/04/14(日) 21:09:03.21ID:???

(function(d)
ってなんで変数名宣言してないんですか?
(function hensuname(d)
変数宣言を調べたんですが、コレの持つ意味がよくわかりません
Name_Not_Found [sage] 2019/04/14(日) 21:09:17.98ID:???
関数の間違いでした
Name_Not_Found [sage] 2019/04/14(日) 21:32:57.34ID:???

不要だからかと

定義、即、実行
Name_Not_Found [sage] 2019/04/14(日) 23:12:45.48ID:???

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

jsfiddle は、Chrome では動くけど、Edge では動かない

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

CSS アニメか
Name_Not_Found [sage] 2019/04/15(月) 01:03:14.64ID:???

うちのEdgeでは普通に動いてるよ
IE11はread onlyになるけど、それでも動くことは動くし

あと矢印キーのほうが楽だとは思わないし、スマホやタブレットのこと考えたら、
clickのほうが手間が省けるだろ
Name_Not_Found [sage] 2019/04/15(月) 05:40:17.90ID:???


ありがとぅ
Name_Not_Found [sage] 2019/04/15(月) 11:51:58.02ID:???
Androidに最初から入っているブラウザなどで、ある機能が使えないときに
エラーを出すのはどうしたらいいでしょう?
まだ実行して無くても、後の方の行に関数が書いてあるだけでもスクリプト自体が
エラーになって停止してしまって、肝心のエラー表示のロジック部分は実行される
事がない場合があるようです。つまり、

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


とすると、関数 aaa が使えない場合でも、alert() 部分が実行される前に
実行前の先読みのような感じで aaa の呼び出し部分が先にパースだけされて
しまって、そこでスクリプト自体がエラーで停止してしまう事があるようです。
なんというか、先読みでパースされて内部でJITコンパイルされてから、
実行に移るからではないかと思っているのですが。
Name_Not_Found [] 2019/04/15(月) 11:59:25.67:sdLCdqLM
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.36ID:???
機能判定には、modernizr だろ
Name_Not_Found [sage] 2019/04/15(月) 12:07:01.19ID:???

一旦、すべての属性を削除してから、href, src を追加すれば?
Name_Not_Found [sage] 2019/04/15(月) 12:13:08.01ID:???
15パズル作れれば強くなれますか
Name_Not_Found [sage] 2019/04/15(月) 12:18:42.96ID:???
vs code 使用なんですが、javascriptファイルだけをコンソールででバックする方法はないんでしょうか?
いちいちhtml作ってalertするしかないんですか?
Name_Not_Found [sage] 2019/04/15(月) 12:18:46.21ID:???
バナナはおやつに入りますか?
Name_Not_Found [sage] 2019/04/15(月) 12:38:43.97ID:???

typeof演算子を使えばよい
Name_Not_Found [sage] 2019/04/15(月) 12:51:39.29ID:???

attributesから属性ノードを得たなら、nameプロパティで属性名を取得するものでは?
removeNamedItem() で削除では?
削除できない場合の再現コードは?
ttps://dom.spec.whatwg.org/#dom-element-attributes
Name_Not_Found [sage] 2019/04/15(月) 12:56:54.74ID:???

よく読んでもらえば書いてあるのですが、それだと、aaa() のように関数を
呼び出す場所を、実際には呼び出さない場合でもコンパイルのために読み込んで
しまい、そこでエラーになってしまうことがあるんです。
その場合、エラーになるだけで、判定ロジックは実行されず、alert()
メッセージは表示できません。
Name_Not_Found [sage] 2019/04/15(月) 12:58:49.15ID:???

意味が分からない
JavaScriptはコンパイル言語ではないはずだが
Name_Not_Found [sage] 2019/04/15(月) 12:59:08.93ID:???
evalでいけんじゃんね?
Name_Not_Found [sage] 2019/04/15(月) 13:01:54.04ID:???
数字アレルギーの直し方教えてください
Name_Not_Found [sage] 2019/04/15(月) 13:38:35.39ID:???

Chromeではちゃんと上手くいくようですが、IEだと勝手に先の方を読み込んで
しまうようなんです。
Name_Not_Found [] 2019/04/15(月) 13:56:37.71:3HCQ3plR

そりゃコンパイラがおかしいんでね?
Name_Not_Found [sage] 2019/04/15(月) 14:20:49.73ID:???
IEだけでなく、NoxPlayerに最初から入ってるブラウザもエラーが出ませんでした。
Name_Not_Found [sage] 2019/04/15(月) 14:21:39.73ID:???
誤:エラーが出ませんでした。
正:判定ロジックによる alert() 表示が出ませんでした。
Name_Not_Found [sage] 2019/04/15(月) 18:21:37.94ID:???


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.51ID:???
15パズルやってるんですが、すでに5行目くらいから理解できないのですが、わからない時のアプローチっていうんですか?
なんか、理解を助ける方法みたいなものありますか?
Name_Not_Found [sage] 2019/04/15(月) 19:21:44.68ID:???
五行目ってこれ?
let container = null; // パズル本体
これ分からないなら、無理だと思う。いくら何でも基礎知識が無さすぎる

そもそも、15パズルから入るのは変だと思う
DOM操作か何か、もっと基礎的なところから始めたら?
Name_Not_Found [sage] 2019/04/15(月) 19:43:37.29ID:???
それじゃないです
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.32ID:???

一行だけ実行してもそりゃエラーが出る
全体を通せばエラーにはならない
ttp://https://jsfiddle.net/obscd3ea/

clickにaction()をバインド→actionの中でslide()を呼び出している
そして更にelem、(多分パズルのピースのdivかなんか)を渡している
Name_Not_Found [sage] 2019/04/15(月) 19:58:36.78ID:???

分割統治法
Name_Not_Found [sage] 2019/04/15(月) 20:21:11.03ID:???
PlayCanvasは普及するでしょうか?
Name_Not_Found [sage] 2019/04/15(月) 20:26:09.81ID:???
するわけないじゃんwww
Name_Not_Found [sage] 2019/04/15(月) 22:33:18.05ID:???
こういうのが全く無いのもいけないし、ありすぎてもいけない
誰も使わないと途絶えるし、流行りすぎると弊害がある
今くらいが本当にちょうどいい
Name_Not_Found [sage] 2019/04/16(火) 00:06:29.74ID:???
初歩的な質問ですみません。

a:hoverした際に、該当のhtmlページをiframeで表示する機能を実装したいのですが、
何か手頃なソースなどはありますか?
調べても、リンクの側に小さくサムネを表示させるようなものしか出てきません。
htmlの方は既に書き終えているのですが・・・aタグをホバーした時に反映されるようにするところで詰まってます
Name_Not_Found [sage] 2019/04/16(火) 01:04:51.28ID:???

こんな感じ?
かなりキモイけど
ttp://https://jsfiddle.net/Ldqt1ypz/1/
Name_Not_Found [sage] 2019/04/16(火) 05:09:37.00ID:???

Quokka.js という拡張機能で、
そのファイル内と端末に、リアルタイムに変数の内容が表示される

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

Ctrl+Shift+P で、Quokka.js new file で使える。
ただし、保存したファイルからは、使えない
Name_Not_Found [sage] 2019/04/16(火) 05:21:46.29ID:???

ありがとうございます
1つ1つ試していかないと理解がおいつかないもので
Name_Not_Found [sage] 2019/04/16(火) 05:22:48.22ID:???

「jquery hover」で検索!

$( セレクター ).hover(
function() {
//マウスカーソルが重なった時の処理
},
function() {
//マウスカーソルが離れた時の処理
}
);
Name_Not_Found [sage] 2019/04/16(火) 07:01:38.78ID:???
ユーザーが入力したキーワードに当てはまるものを配列の中から選びたいです
これが完全一致とか部分一致の場合は簡単ですが、
似ているようなものを選択できる曖昧な一致を判断したいです
例えば「カエル」と言う言葉に対して「オーエス」よりも「カーネル」が
よりマッチしていると言う感じに判断したいのですが
良いアルゴリズムはありますでしょうか
Name_Not_Found [sage] 2019/04/16(火) 07:19:46.32ID:???
機械学習・AI は、Python
Name_Not_Found [sage] 2019/04/16(火) 08:37:47.05ID:???

形態素解析後に類語辞書を引っ張る
アルゴリズムよりも辞書を用意する方が苦労するような
Name_Not_Found [sage] 2019/04/16(火) 08:39:59.18ID:???


ありがとうございますー。ちょっと調べてみますわ
Name_Not_Found [sage] 2019/04/16(火) 09:19:37.30ID:???

聞くときだけ敬語?
Name_Not_Found [sage] 2019/04/16(火) 09:23:23.46ID:???
ありがとうございますは敬語だろうが。コチャゴチャ抜かすとブッ飛ばすぞ。
Name_Not_Found [sage] 2019/04/16(火) 10:03:14.97ID:???

これって一ページだけなんですな。
複数のaタグがある状態で、それぞれホバーしたらiframeに出るっていうのがやりたくて・・・
Name_Not_Found [] 2019/04/16(火) 10:36:58.59:cywz1gqj

分岐を外してみたところ特定の属性ではなくて、偶数の属性を取りこぼしているようですが原因は何でしょうか?

<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.37ID:???
>>863
ttp://https://jsfiddle.net/p6q0bo7g/1/

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

置換前
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.02ID:???

配列状の物を添字を使って削除する時は後ろからやるのがセオリー
for (j=tag[i].attributes.length ; --j >= 0; )
Name_Not_Found [sage] 2019/04/16(火) 11:40:54.83ID:???

ご教示ありがとうございました
Name_Not_Found [sage] 2019/04/16(火) 11:43:45.56ID:???

ttp://https://jsfiddle.net/rtezmdf0/
Name_Not_Found [] 2019/04/16(火) 12:15:33.78:99qp+ZVK

類語もある方がより良いとは思うのですが
私が今求めているものは、ユーザーがうろ覚えのキーワードを入力しても欲しかった用語がマッチするようにするための
単語の意味ではなく【文字間の関係性】を計算するアルゴリズムで、
今は「カエル」なら「カ→エ」「カ→ル」「エ→ル」
のような繋がりでチェックしたり、他にも文字数の一致度などから適当にやってまして
より精度を上げるためにローマ字化したりしようかなどと考えたのですが、もうすでにある程度確立された素敵なアルゴリズムや、モデルがあるのではないかと思い質問しました。
Name_Not_Found [sage] 2019/04/16(火) 12:32:58.91ID:???

これ、2、3行でデバッグできないんですかね
少ないコードで動作確認しないとどういう動きかわからないです
Name_Not_Found [sage] 2019/04/16(火) 12:38:57.63ID:???

ありがとうございます。出来ました
Name_Not_Found [sage] 2019/04/16(火) 12:48:48.88ID:???

jsのステップインを使うと良い
js chrome デバッガ
辺りで検索
Name_Not_Found [sage] 2019/04/16(火) 13:04:35.75ID:???

省入力候補/推測変換のことか?
IMEの仕事を肩代わりしたいなら、変換用の辞書を用意するしかなかろう
Name_Not_Found [sage] 2019/04/16(火) 13:32:39.97ID:???

レーベンシュタイン距離とか
Name_Not_Found [sage] 2019/04/16(火) 13:34:45.71ID:???
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.32ID:???

次はデバッガの使い方聞いてくるんじゃないのこの人
即時関数がわからんレベルなのになんで基礎から勉強しないんだろう
Name_Not_Found [sage] 2019/04/16(火) 13:52:43.45ID:???

ttp://https://mieruca-ai.com/ai/levenshtein_jaro-winkler_distance/
Name_Not_Found [sage] 2019/04/16(火) 14:33:43.04ID:???

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.12ID:???
…あまり強い言葉を使うなよ 弱く見えるぞ
Name_Not_Found [sage] 2019/04/16(火) 15:14:58.68ID:???
正規表現使ったらバカに見えるのか
Name_Not_Found [sage] 2019/04/16(火) 15:17:50.65ID:???
まあ正規表現使ってる意味ない部分だしな
Name_Not_Found [sage] 2019/04/16(火) 15:19:54.77ID:???
疲れたら妙に難しい方法でコード書くことあるよね・・・
朝起きて見直すと俺何やってんだって気分になる
Name_Not_Found [] 2019/04/16(火) 15:20:53.80:gASaHvq7
これ、もとからhttpsだったらhttpssになっちゃうんじゃなかろか
Name_Not_Found [sage] 2019/04/16(火) 15:25:13.56ID:???

ありがとうございまし
初めて知りました
Name_Not_Found [sage] 2019/04/16(火) 15:34:04.15ID:???

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


tp:→tps:だったら大丈夫ですかね
Name_Not_Found [] 2019/04/16(火) 15:39:08.53:Er1Gv08x

素直にreplace('ttp://http://', 'ttp://https://')でよくない?
なにやりたいか一目でわかるし
Name_Not_Found [sage] 2019/04/16(火) 15:46:28.36ID:???
スラッシュ入れなくていいんじゃないか
Name_Not_Found [sage] 2019/04/16(火) 15:50:54.02ID:???

そうですね 可読性には気を付けるべきでした

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

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

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

ttp://https://jsfiddle.net/u3zbswhk/

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

131行 -> 96行 -> 83行
Name_Not_Found [sage] 2019/04/16(火) 17:30:35.23ID:???
速度てw
Name_Not_Found [sage] 2019/04/16(火) 17:43:34.66ID:???

この状態で13押したら
ttps://yabumi.cc/16a254d9f2ba189836444990.png
こうなるぞ
ttps://yabumi.cc/16a254f2bfd8779cf8101566.png

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

これ本当?
生JSで大変なのは分かるけど、jQuery使っても簡単にならないの??
Name_Not_Found [sage] 2019/04/16(火) 17:49:41.33ID:???

映ってねーぞバーカw
Name_Not_Found [sage] 2019/04/16(火) 18:08:35.17ID:???

■ピュアJSの場合
要素.aria = 値;

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

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

vueとかだと、それをHTML側に直に書けるから便利だねっつー話だと思う
まあそれぞれフレームワーク毎に特殊な書き方するわけだけど
Name_Not_Found [sage] 2019/04/16(火) 18:29:51.50ID:???
,885
ここで聞いて大正解でした
本当にありがとうございます
Name_Not_Found [sage] 2019/04/16(火) 18:47:09.71ID:???

マジかー悩むなぁ
まあ、じゃあvueでいいか。しばらく生きてるだろ
897 [sage] 2019/04/16(火) 18:48:53.13ID:???

ワロタw いや失敬失敬。
でもそこは本質的な所じゃないから後よろ!
xとyの情報も持ってるからそれでできるはず!


相変わらず「脱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.47ID:???
> 昔のコードはHTMLを組み立てるのに文字列を結合するというストイックなやり方でした。

まあ、こんな事書いてるし、昔のコードがクソすぎるってだけなわけでw
Name_Not_Found [sage] 2019/04/16(火) 18:51:10.48ID:???
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.12ID:???

ステップインを使う
これ分からないならもう止めたほうが良いぞ
Name_Not_Found [sage] 2019/04/16(火) 19:10:22.10ID:???

間違ってるものをドヤ顔で晒して人様の手を煩わせておいて失敬失敬はないだろ
Name_Not_Found [sage] 2019/04/16(火) 19:47:00.17ID:???

ステップ実行とステップインは違うってことですね
近藤してましたが調べてみます
897 [sage] 2019/04/16(火) 19:48:22.28ID:???

ttp://https://ics.media/entry/17451/
> WAI-ARIAはHTML要素の属性を動的に書き換えなければならないため、生JSやjQueryで制御しようとすると、正直、骨が折れます。

って書いてあったから、サンプル作ったよ。リンク先にある。gridLayoutとlistLayoutの切替部分
ttp://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.00ID:???

本家が懇切丁寧に説明してくださってるんで
読みながら真似してみれば良いんでね?
ttp://https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints?hl=ja
ttp://https://developers.google.com/web/tools/chrome-devtools/javascript/step-code?hl=ja
Name_Not_Found [sage] 2019/04/17(水) 00:23:02.46ID:???
unityに匹敵するjavascript用ゲームエンジンを作って欲しい。
Name_Not_Found [sage] 2019/04/17(水) 01:51:00.61ID:???

よし、お前さんが基礎を作って旗を振るんだ
Name_Not_Found [sage] 2019/04/17(水) 09:03:23.40ID:???
unityは以前、javascriptが使えていたのに…。
残念。
Name_Not_Found [sage] 2019/04/17(水) 09:41:06.61ID:???
誰かつくって
Name_Not_Found [sage] 2019/04/17(水) 09:43:00.90ID:???

結構最近だよね
Name_Not_Found [sage] 2019/04/17(水) 11:17:14.20ID:???
htmlのonclickを使わず、idの取得だけでクリックイベントを作ることは出来ますか?
Name_Not_Found [sage] 2019/04/17(水) 11:31:26.70ID:???

click()
Name_Not_Found [sage] 2019/04/17(水) 12:56:43.36ID:???

MouseEvent
Name_Not_Found [sage] 2019/04/17(水) 14:26:02.60ID:???
ロジック学んでいれば他の言語でも同じようにやれますか?
Name_Not_Found [sage] 2019/04/17(水) 14:41:23.59ID:???
じゃバスク版ユニティを作れ。
Name_Not_Found [sage] 2019/04/17(水) 14:52:17.20ID:???
バスクってmsが発表した言語?jsと何の関係が?
Name_Not_Found [sage] 2019/04/17(水) 15:03:30.58ID:???

前から配列内の要素を削除していくと、
削除した瞬間に、後ろの要素が前にずれるから、バグる!

だから、配列の要素の削除は、難しい
Name_Not_Found [sage] 2019/04/17(水) 15:51:28.39ID:???

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.62ID:???

そんな、ややこしいものをやらなくて良い

君がやるべきは、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.69ID:???

chromeでもfirefoxでもsafariでも動きませんでした。
もしかしてあなた私より初心者なのでは?w
897 [sage] 2019/04/17(水) 16:49:19.07ID:???

問題はそこではなくて、これはデータを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として扱えば動くぞ。
それを実装たのがこれだ ttp://https://jsfiddle.net/gqvn87k5/

 ほれ、なおしたぞ。ドヤ?
Name_Not_Found [sage] 2019/04/17(水) 17:12:43.80ID:???
出たよrubyのクソ仕様w
C時代の番兵でいろんなスレでアスペ荒らししてたのはRubyのクソ仕様が原因だったwww
Name_Not_Found [sage] 2019/04/17(水) 18:16:37.62ID:???
jsでゲーム作るならどんなのが?
Name_Not_Found [sage] 2019/04/17(水) 18:24:55.68ID:???

本人ではないが、サーバサイドスクリプトがクライアントサイドで動くわけなかろう
「サーバで動かせ」という意図ぐらいは察したらどうだ?
Name_Not_Found [sage] 2019/04/17(水) 18:49:54.62ID:???
nodeでも動きませんでした。
せめて動くjs書けないのww
Name_Not_Found [sage] 2019/04/17(水) 18:57:56.93ID:???
Rubyと書いてあるじゃん
まあJavaScriptのスレでRubyで答える方がおかしいんだけど
897 [sage] 2019/04/17(水) 19:06:15.77ID:???
しかもこういう用途に例外を使うとかいうクソ発想の持ち主w
Name_Not_Found [sage] 2019/04/17(水) 21:18:21.23ID:???
爆釣やな
926 [sage] 2019/04/17(水) 21:22:10.36ID:???
スレは、答えを書く所ではない。
Ruby などの擬似コードで、考え方・ヒントを教える所

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

答えをコピペする奴は、進歩もしないし、どうにもならない
Name_Not_Found [sage] 2019/04/17(水) 21:26:39.17ID:???

ruby書くとこじゃねえんだよ
死ねや
897 [sage] 2019/04/17(水) 22:13:35.57ID:???
> Ruby などの擬似コードで、考え方・ヒントを教える所

ダメなコードから学べるのは
ダメなコード例です。
Name_Not_Found [sage] 2019/04/17(水) 22:22:10.95ID:???

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

配列のインデックスが負数の場合は、配列を後ろから数えるのも定番。
色んな言語を調べてないだろ?
897 [sage] 2019/04/17(水) 23:50:48.63ID:???

そもそも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.81ID:???
あ、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.95ID:???
jQueryが得意な人は、いろんなものが得意なんやで?w
Name_Not_Found [sage] 2019/04/18(木) 02:12:45.30ID:???

jQueryばかり勧める人がよくいえたもんだな
Name_Not_Found [sage] 2019/04/18(木) 08:22:16.98ID:???
ttp://https://video.fc2.com/content/20090104qC1kSMF2/&tk=TnpnMk5EVXdOalU9
897 [sage] 2019/04/18(木) 08:36:37.81ID:???

jQueryを勧めるのはjQueryがふさわしいからであって、
何もアプリを作る時にjQueryなんか勧めませんよ?

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

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

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

関数型でやりすぎると、可読性が悪くなるから、わかりやすい書き方が良い場合もある
Name_Not_Found [sage] 2019/04/18(木) 11:57:26.78ID:???

言語とライブラリを並べて書かれるとなんか変な気分
次元を揃えず計算してるみたいな…
Name_Not_Found [sage] 2019/04/18(木) 12:35:37.62ID:???

それらは関数型言語ではない
血が近いからと言って日本人と中国人が違うのと同じ
Name_Not_Found [sage] 2019/04/18(木) 12:50:43.01ID:???
クロージャって何がいいの?
ttp://mevius.5ch.net/test/read.cgi/tech/1415419907/261">ttp://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が最初から関数型言語としてスタートしてないからであって、言語が違うからですよね。

と語っているね


ttp://http://www.atmarkit.co.jp/news/200907/24/ruby.html
Name_Not_Found [sage] 2019/04/18(木) 12:54:03.65ID:???

もうすぐ無くなる言語を引き合いに出してどうするの?
Name_Not_Found [sage] 2019/04/18(木) 13:09:19.73ID:???
なんだクソ言語がまた「る、るびぃでもできるしっ!」するために考えなしに木に竹を接いだだけかw
Name_Not_Found [] 2019/04/18(木) 14:50:50.31:q+YWfZ8j

良し悪しなんてないよw
こういう閉じたカタチしてるからclosureって呼ぼうねってだけで
Name_Not_Found [sage] 2019/04/18(木) 14:52:15.32ID:???
クロージャと無名関数、名前どちらかに統一してほしかった
最初2つが同じものを指すと知らなくて混乱したわ
Name_Not_Found [sage] 2019/04/18(木) 14:53:43.68ID:???

もう少し深くお勉強したほうが良いかも…
Name_Not_Found [sage] 2019/04/18(木) 14:53:55.42ID:???
クロージャかつ無名関数がよくあるってだけで別。
Name_Not_Found [sage] 2019/04/18(木) 15:04:40.55ID:???
単体で使うことほとんどない
Name_Not_Found [sage] 2019/04/18(木) 15:05:03.54ID:???
と思ったけどそうでもなっ買った
Name_Not_Found [sage] 2019/04/18(木) 15:05:52.76ID:???
無名・匿名関数は、単に名前のない関数。
一方、クロージャは、外のスコープの変数の参照を、つかんでいるもの

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

一方、Python は、Rubyの真似をしないから、批判が大きい
Name_Not_Found [sage] 2019/04/18(木) 15:15:08.63ID:???
JavaScriptの関数はクロージャだが、無名とは限らない
Name_Not_Found [sage] 2019/04/18(木) 15:31:29.25ID:???

なるほど、rubyはもうすぐ消えて無くなる言語と
Name_Not_Found [sage] 2019/04/18(木) 15:53:15.30ID:???
datasetは何のために使うのですか?
Name_Not_Found [sage] 2019/04/18(木) 16:00:33.49ID:???

誰も知らない無名言語のマネはできないなぁw
それとも有名言語のC++やJavaにはブロックスコープが無い、もしくはrupy?とかいう泡沫言語からパクったのかい?w


ttp://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:50TA3Y6O

ある要素になんらかのデータを紐づけたいと思ったら使うのがdataset
・ある要素が処理対象か否かを表すフラグ
・JSライブラリ等に渡すパラメータ
・処理中のデータの一時保存先
なんでも好きなように使うがいい
Name_Not_Found [sage] 2019/04/18(木) 17:27:28.90ID:???

classやidとはどう違うのですか?
参考サイト探したんですが、javascriptについては見つからなかったです
Name_Not_Found [sage] 2019/04/18(木) 18:15:15.35ID:???
datasetはオレオレ属性作らなくても固有の値持たせられるし、setAttribute/getAttributeを使わなくても直に値を読み書きできるのがメリット
classやidで足りてるなら無理して使わなくてもいいよ
Name_Not_Found [sage] 2019/04/18(木) 18:18:55.53ID:???
もらった15パズルのサンプルに含まれていたので、、、
Name_Not_Found [sage] 2019/04/19(金) 01:03:15.23ID:???
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.90ID:???

JSの関数はクロージャになり得る能力、ようは要件を備えてるだけで
関数定義が実際クロージャな関数を作ってるのであって
new Function等で定義された関数はクロージャではないし、
デフォの関数のいくつかもクロージャではない

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

新着レスの表示

2ch勢いランキング アーカイブ Web制作板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら