X

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

レス数が1000を超えています。これ以上書き込みはできません。
2019/02/17(日) 02:12:57.04ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

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

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

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

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

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

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

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

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

f(i);
}
2019/02/17(日) 18:09:43.19ID:???
>>19
あーそうか、型がそもそも無いんだから無理だね。
typescript使うしかないか
ありがとう
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);

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

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

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

ちなみにnode.jsのnodebrewとnpmは、pythonだとpyenvとpipに相当するという理解でOK?
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 } ) );
2019/02/20(水) 06:39:25.66ID:???
>>41
node.js のnpm, yarn は、Ruby のBundler と同じ

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

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

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

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

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

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

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

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

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

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

var obj = { __proto__: 1 };

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ってすりゃいいじゃん
2019/02/23(土) 17:46:31.56ID:???
へー1.4から関数も受けつけてくれるようになってたんだ?
http://js.studio-kingdom.com/jquery/manipulation/text
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って表示されないんでしょうか
2019/02/23(土) 21:22:26.62ID:???
>>82
o.key → o[key]
変数名とプロパティ名がごっちゃになってる
2019/02/23(土) 21:44:06.76ID:???
>>83
ああそうか、わかりました
o.keyだとkeyが変数でアクセスできるわけないですね
[]だと中が変数でも中身の文字列に変換されるからアクセスできるってわけですね
ありがとうございました
2019/02/23(土) 21:53:11.02ID:???
質問です
sinが-cosが-だったらπ〜2πの角度で返してくれる関数って存在しますか?
asinとacosが別々なのでどっちも-π/2〜π/2または0〜πで返ってしまうので
2019/02/23(土) 22:16:01.99ID:???
>>85
Mathクラス
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math

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

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

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

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

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

他には、Haxe とか
2019/02/25(月) 07:48:47.91ID:???
vs codeでどうやってjavascriptのでバッグをするんでしょうか?
チュート通りにやるのですが、うまくいきません
https://i.imgur.com/wfkEtt0.jpg
2019/02/25(月) 08:05:44.50ID:???
最近の質問、投げっぱなしばかりだけど、全員同じ人なのかな?
2019/02/25(月) 11:14:35.32ID:???
>>107
解決しました
2019/02/25(月) 11:14:52.43ID:???
ゲームエンジンを使わないでゲーム作るメリットはなんですか?
2019/02/25(月) 11:54:30.46ID:???
仕組みの勉強とかじゃね
あと新しい言語学ぶときとかの題材にいい。俺の場合直接数学とか題材にしちゃうと眠くなるので…
2019/02/25(月) 12:11:37.27ID:???
>>108
何が解決?
2019/02/25(月) 12:14:42.42ID:???
食料問題
2019/02/25(月) 12:25:28.92ID:???
>>112
良かったね
もう報告しなくていいよ
114114
垢版 |
2019/02/26(火) 00:21:29.84ID:???
質問したいことがあります。
とても困っています。

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

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

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

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

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

https://ideone.com/63JYMf


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

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

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

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

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

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

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

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

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

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

ruby -run -e httpd . -p 8080

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

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

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

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

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

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

例えばCSSで

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ウディタは古い開発ツールで作成されている感じでしょうか
2019/03/04(月) 07:55:40.72ID:???
やはり、条件後出しで質問してきたな
いつまでも、学習しない人だな
2019/03/04(月) 09:18:25.46ID:???
ウディタなんて誰も答えてないんだが。
独り言ならチラシの裏にお願いしたいね。
2019/03/04(月) 09:23:39.79ID:???
>>222
ゲーム制作板に行ってくれ
226Name_Not_Found
垢版 |
2019/03/04(月) 13:54:36.36ID: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 ?
})
2019/03/04(月) 23:17:16.88ID:???
>>226
別のプロミスを返却するのは当然で何もおかしいこと無いんだけど
「prom1 = 〜」の中でprom1を返すのはおかしくね?
自分が完了するのを待機するから永遠に終わらない
2019/03/05(火) 05:32:16.14ID:???
jsdocというのはコメントアウトとは異なるのですか?
他のファイルをインポートしたり出来るようですが
2019/03/05(火) 06:59:51.36ID:???
>>227
大常識としてプロミスチェーンのループは認められてないでしょ
プロトタイプチェーンと同じく例外が発生する
2019/03/05(火) 11:07:37.92ID:???
>>226
誰か回答するだろうと思って放置していたが誰も回答しないな。

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

まだ会話を続けるなら、名前欄に、235 と入れて投稿して
2019/03/06(水) 08:45:20.32ID:???
>>244-245
死ね
2019/03/06(水) 09:16:30.52ID:???
rubyだけは絶対に使わないように
2019/03/07(木) 07:10:09.29ID:???
>>244
現代ならスクリーンキャプチャして
文字解析WebAPI叩くとか現実的
249Name_Not_Found
垢版 |
2019/03/07(木) 07:12:49.68ID:ahDydsPD
10数年ぶりにサイト作るんだけど、昔はJavaScriptを停止してるブラウザいっぱいあったけど、
今のブラウザは100%Javascript動くと思ってOK?
2019/03/07(木) 12:28:15.90ID:???
そもそもjavascript動かしただけで犯罪になるのが日本だからな
逮捕されることを覚悟してやるしかねえわ
251Name_Not_Found
垢版 |
2019/03/07(木) 13:38:59.97ID: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]);
って方法は思いつくものの、なんかもっといい書き方があるような気がして
252251
垢版 |
2019/03/07(木) 13:41:14.14ID:???
>>251の最初のconstの行の末尾は ]; じゃなくて }; です…
253Name_Not_Found
垢版 |
2019/03/07(木) 13:46:09.53ID:/wM/uMMX
ゼビオ行きたい
2019/03/07(木) 15:42:08.00ID:???
>>251
こんなんは?てきとうだけど。
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);
2019/03/07(木) 20:34:22.92ID:???
>>251
もっと柔軟に考えな
定義はできるだけシンプルのほうが良い
アクセスは構造化されていたほうが良い
この2つは両立できる
2019/03/07(木) 21:22:34.99ID:???
本来順序がないものに配列使うのは好きじゃないなぁ
だからArray#entries/Object.entriesとかも好きになれない
2019/03/07(木) 22:01:19.13ID:???
entiries系は走査が目的で順序なんて気にしないことの方が多いでしょ
2019/03/07(木) 22:22:19.75ID:???
>>257
key/valueを配列で持ってるでしょ
そのことよ
2019/03/07(木) 22:32:00.21ID:???
[key, value] of entries
とかすりゃいいだけじゃん
2019/03/07(木) 22:35:49.82ID:???
>>251
new Map
2019/03/07(木) 23:01:32.97ID:???
>>259
多分もうそれが嫌なんじゃない?
jsのArrayオブジェクトを静的型付け言語の配列と同じように考えてるっぽい
2019/03/08(金) 01:30:24.56ID:???
>>261
え、違和感ない?一ミリも?
他にもMapに配列リテラル与えるのも違和感あるんだが
2019/03/08(金) 06:59:30.07ID:???
>>262
全く違和感ない
むしろ、>>251で無駄にキーを定義しているのが気になる
配列はキーがインデックスになっただけ
2019/03/08(金) 07:22:04.29ID:???
>>262
> 他にもMapに配列リテラル与えるのも違和感あるんだが
「違和感がある」がキーのことか、引数に二次元配列を渡していることか、わからんが、既にある定義に違和感があるなら、Mapを漠然と理解している気になってるからなんじゃないかね
イテレータとか、理解してるか?
2019/03/08(金) 12:39:13.11ID:???
ま、好みの問題だし[0],[1]のアクセスに全く違和感ないなら分かり合えんのでいいわ
デストラクチャリングできるから良いって問題じゃないし
ただesには妥協の産物もあるってことは理解しといたほうがいいぞ
2019/03/08(金) 12:43:32.37ID:???
jsが妥協だらけなんてことは大前提の上での話だと思うけど……生まれからして開発者と会社間の妥協の産物やないか
2019/03/08(金) 12:53:34.47ID:???
すべての言語が妥協だらけなんてことは大前提の上での話だと思うけど……
2019/03/08(金) 12:58:23.28ID:???
我が人生に一片の妥協なし!
2019/03/08(金) 15:23:48.72ID:???
ちなみにリリースしたてのreact hooks apiの使用例:
const [count, setCount] = useState(initialCount);
5ちゃんのスーパーハカーによると妥協の産物である。
2019/03/08(金) 22:50:57.61ID:???
だからそれもデストラクチャリング前提の妥協の産物でしょ
2019/03/08(金) 22:57:47.68ID:???
メモリ上に並ぶんだからどうやったって順序があるだろ
2019/03/09(土) 09:28:00.16ID:???
違和感ある/なしの感想だけを求めて理由はどうでも良かったのか
すぐ共感を求める女性のような考え方だな
2019/03/09(土) 10:13:36.21ID:???
これか?
 'a' : [ 正規表現, 文字列 ],

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

違和感なんて感じないけど?
2019/03/09(土) 10:17:40.04ID:???
Mapや配列にした途端に違和感があるという不思議ちゃん
2019/03/09(土) 10:56:59.23ID:???
>>256はPHPの連想配列にも不満をいいそう
2019/03/09(土) 11:49:05.06ID:???
>>265
考え方が狭いだけだと思うよ
[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]と書いて置いてオブジェクトに変換して使うとかも簡単にできるんだからさ
そのへんが内部的にも行われてると考えればいいだけで変なこだわりを持っても価値がないんだよ
2019/03/09(土) 13:14:08.88ID:???
元は順序がどうとか言ってたから、arr[3]みたいな順序に依存したアクセスが気にくわないと言うのならわかる
2019/03/09(土) 13:15:16.54ID:???
そもそも、new Mapの引数にはiterableが指定可能で配列限定ではないんだが
2019/03/09(土) 13:20:11.46ID:???
o = { a:'b', c:'d', e:'f' }
new Map(Object.entries(o))
でいいじゃん
2019/03/09(土) 17:50:19.98ID:???
iterableの考え方が出来てない人が「妥協の産物」と断じているだけだろう
2019/03/09(土) 18:29:25.30ID:???
本人も両親の妥協の産物なのです
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>
2019/03/10(日) 00:12:22.00ID:???
>>282
まず服を脱いでください
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を渡す方法はありませんか?
2019/03/10(日) 06:38:27.92ID:???
>>284
> このときyがundefinedになりますが、
button.onclick の関数を定義してるのはhello関数のスコープ
hello関数で定義しているyは参照できるはず
適当に補って試してみたが再現しない

変数のスコープ説明のためのソースっぽいけど、このソースそのままなの?
どこかtypoしてないか?
286Name_Not_Found
垢版 |
2019/03/10(日) 09:11:19.04ID: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回繰り返すのでしょうか
2019/03/10(日) 09:30:41.49ID:???
>>285
すいません、ちょっと違いました
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); };
}
2019/03/10(日) 09:53:35.90ID:???
>>286
それなら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);
});
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);
});
});
2019/03/10(日) 10:44:08.26ID:???
>>286
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))
2019/03/10(日) 11:24:50.09ID:???
>>286
ボタンが一列に並ぶかどうかとか色々不明な前提条件があるので
すまんけど明確な方針は出せない
少なくとも適用する関数が全て同じfncならば、
idじゃなくてclassでまとめることをオススメする
https://jsfiddle.net/kgn91oyL/
2019/03/10(日) 11:36:16.09ID:???
>>286

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

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

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



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

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

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

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

#テクノロジー犯罪
#四代目澄田会
2019/03/11(月) 21:26:04.37ID:???
>>286
べつに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
2019/03/11(月) 21:34:51.03ID:???
jQueryなんて時代遅れって言われたんだけど今イケてるのって何?
2019/03/11(月) 21:37:41.65ID:???
生JS
2019/03/11(月) 21:39:38.12ID:???
jQueryのなんというかvbaくさい楽勝さがやめられん
アホでも書ける
2019/03/11(月) 21:59:37.19ID:???
>>304
これが現実やで。周りに振り回されている人が、周りを振り回そうとしてるだけ

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

↓ 2年後

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


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

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

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

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

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

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

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

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

結果:
012345

"あ0い1う2え3お4".replace(/^[0-9]/u, '')
ではうまく行きませんでした、どなたかお助けを〜
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 '';
});
2019/03/14(木) 15:11:43.54ID:???
>>329
"あ0い1う2え3お4".replace(/[0-9]/g, c => String.fromCodePoint(c.codePointAt(0) - 0xFEE0)).replace(/[^0-9]/g, '');
2019/03/14(木) 15:13:38.40ID:???
normalize()を使おうぜ
333Name_Not_Found
垢版 |
2019/03/14(木) 15:13:39.18ID:1lyNtq79
>>330-331
すごい!
半日ぐらい頑張った苦労は一体・・・w

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

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

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

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

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

function(func){
func()
}
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
2019/03/15(金) 12:35:44.33ID:???
>>348-348
ありがとうございます!完全に分かりました。助かります…
2019/03/15(金) 13:39:00.60ID:???
JavaScript のthis は、global のwindow などを指してしまうから、クソ仕様

だから、jQuery, Haxe では、this を修正している
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
2019/03/15(金) 13:48:49.73ID:???
>>351
RubyにはRubyのやり方がある

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

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

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



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

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

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

例えば関数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が発火する、よね!
って考え方がコールバック
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を渡しているわけではない

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

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

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

値は基本的に複製されることはなく
すべて同一存在の名前付けの連鎖でしかない
要するにお前が会社ではタッ君と呼ばれ、家ではターちゃんと呼ばれてるのと同じ
2019/03/16(土) 21:26:22.98ID:???
あんまり触らないほうがよさそうだな
2019/03/16(土) 21:39:16.61ID:???
変に他の言語に引っ張らなければJavaScriptはシンプルでわかりやすい言語だと思うけどなぁ
2019/03/17(日) 00:27:38.62ID:???
>>369
何かの図形描画ツールを参考にすれば?
377Name_Not_Found
垢版 |
2019/03/17(日) 10:46:23.51ID:oYnZimu7
今jsのロクでも無い部分ってあるのかな
昔はundefinedがうんちだった
2019/03/17(日) 11:53:16.69ID:???
undefinedなんて実際に問題になることなかったろ
undefinedに何か代入するとかワザと壊しにかかってるんだからその結果壊れても問題ないでしょ
他にも置き換えられたら困るものなんて無数にあるんだし
2019/03/17(日) 11:58:56.33ID:???
他の言語は知らんがjsは基本
昔動いてたコードは今も動く
動いてたうんちコードは今も動くはず
'use strict'がなければundefined = 'puyopuyo'も
2019/03/17(日) 13:08:53.43ID:???
node.jsの使い途が分からない。
2019/03/17(日) 14:31:49.75ID:???
>>380
使わなきゃいいじゃん
2019/03/17(日) 16:50:28.45ID:???
使いみちが分からんものを使ってみるのも大事だぞ
そのときには使えなくても後々使うかもしれない
383Name_Not_Found
垢版 |
2019/03/17(日) 17:18:44.38ID:RNotdYYW
node.jsは一度使っておいたほうが良い
2019/03/17(日) 19:26:56.07ID:???
Node.js、コマンドラインでは毎日使ってるし
(ただ単にバッチファイルをダブルクリックしたら起動してファイルを生成してくれるってだけだけど)

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

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

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

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

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

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

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

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

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

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


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

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

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

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

として、1,2,3みたいな文字列を
ニューヨーク,東京,パリ
という風に置き換えるにはどうすれば良いですか?
1000個以上あって全部replaceだととんでもない長さになるので、良い方法を探しています。
449Name_Not_Found
垢版 |
2019/03/25(月) 11:54:24.22ID:cn8CNW4E
真っ先に思いついたのはメソッドチェーンだけど、1000個つなげるとエラーが出る気がして仕方がない
ソースの時点で書き換えるのはダメなの?
2019/03/25(月) 12:09:20.31ID:???
1000個くらいなら配列にしてmapしてもっかい文字列に戻せばええんちゃう?
2019/03/25(月) 12:21:43.37ID:???
>>448
string.replace(/\d+/g, n => hash[n]);
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];
}
});
2019/03/25(月) 12:29:43.99ID:???
>>448
const cities = [, 'ニューヨーク', '東京', 'パリ'];
const nStr = '1,2,3';
const cStr = nStr.split `,`.map(n => cities[n]).join();
console.log(cStr);
\\=> ニューヨーク,東京,パリ
2019/03/25(月) 13:29:35.43ID:???
>>452
間違えた。訂正

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

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

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

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

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

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

また、jQuery などでDOM から、return false を削除できるかも知れない
464463
垢版 |
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
465Name_Not_Found
垢版 |
2019/03/28(木) 01:07:17.71ID:ZWPLcePw
ちょっと教えて欲しいんだけど、
これからPWAの基本的な使い方を学習しようと思うのだけど、開発環境はどういうのが良いの?テキトーなエディタとブラウザで進める感じ?それともvisual studio codeとか?
ゆくゆくはVue.jsあたりでSPAに進んでいくつもりだけど、最初は簡単なサイト(HTML+CSS+JS)をPWA対応しながらPWAとServiceWorkerの使い方になれていきたいと思っている

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

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

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

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


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

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

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

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

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

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

何にもない場合に、JS から関数を呼び出してもペーストは出来ないようになっている。
ところが、ユーザーが CTRL+V キーを押した場合は、<p> タグにさえもペースト
できる方法が有る。<p> タグの attribute に名前は忘れたけど、
xxxx="true" みたいにしておく必要がある。すると、そのタグで、
pasteイベントが発生するようにもなるので、そのイベントを拾えば、
また、いろいろなことが出来るようになる。
486Name_Not_Found
垢版 |
2019/03/29(金) 17:34:22.11ID:zaSXTawa
>>485
あぁ、そういう事か理解した
>何にもない場合に、JS から関数を呼び出してもペーストは出来ないようになっている。
これが出来ると思って色々触ってたわ
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>
2019/03/29(金) 17:59:27.31ID:???
なにもない状態でクリップボード取得できたら完全にセキュリティホール
2019/03/29(金) 18:02:43.51ID:???
>>487
htmlタグにcontenteditable="true"したらえらいことになったwww
2019/03/29(金) 18:09:11.31ID:???
そうか、editable になるのはそれはそれで問題だね・・・。
2019/03/29(金) 18:12:19.69ID:???
htmlに設定すると、サイトの各要素をdeleteやimgごとコピーしたりできるようになるのか
開発ツール無しでも結構色々出来て面白いなこれ
2019/03/29(金) 20:28:05.34ID:???
いまさらかよ
2019/03/29(金) 21:11:16.85ID:???
>>490
今だとnavigator.clipboard.readText()で取得できる
execCommandなんかはオワコン
2019/03/29(金) 23:21:45.86ID:???
>>491
googleのVisBug拡張機能じゃダメか?
495Name_Not_Found
垢版 |
2019/03/30(土) 01:39:18.06ID:+uiLpP+A
onloadイベントでajax使うとポップアップブロックされるんだけど
ページロード時にデータベースの項目とかどうやって表示するの?
2019/03/30(土) 01:54:51.64ID:???
ポップアップとajaxは特に関係がない機能なので、
何か変なコード書いてる気がする
2019/03/30(土) 01:56:25.63ID:???
コードを見せて欲しい 
498Name_Not_Found
垢版 |
2019/03/30(土) 02:16:37.65ID:+uiLpP+A
指摘の通りべつのところでした

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

これでself = windowと見なされてwindow.open()してたもよう
499Name_Not_Found
垢版 |
2019/03/30(土) 02:28:11.29ID:+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
アロー演算子の使い方が間違っているのかも
2019/03/30(土) 02:33:01.85ID:???
>>499
>>328辺りからアロー関数のthisについて話があるから読んでみて
俺もアロー関数は苦手で、いつも無名関数にしてる

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

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

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

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

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

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

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

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

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

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

https://jsfiddle.net/ub0rh3fo/

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

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

いま、thisが「Global(window) を指す事があるから、ややこしい」
って話でしたよね?
2019/03/31(日) 13:10:45.45ID:???
↑を見れば分かるように、
JavaScript標準自体がややこしいんだよね。
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とか関係ないよ。
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
});
2019/03/31(日) 13:28:58.89ID:???
ハイパー大雑把に言えば
thisはクラスのメンバ関数でクラス自体を参照するものだったじゃん?
2019/03/31(日) 13:40:04.88ID:???
>>528
「俺の知っている言語では」という言葉が抜けてるよ
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も同じだってわかるのに
2019/03/31(日) 14:39:11.10ID:???
>>524
jQueryはthis値を変えてるって話だったよね?
forEachとeachのthis値を比較してみ
2019/03/31(日) 14:55:05.05ID:???
>>531
そもそも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);
2019/03/31(日) 15:16:10.62ID:???
>>532
君の個人的な「あり得ない」の話はしていない
jQueryがthis値を変えているのは事実
2019/03/31(日) 15:29:04.93ID:???
>>533
その言い方だとjQueryがthisを変えてるのが悪いように見えるけど、
実際にはJavaScriptだってthisを変えているし、
むしろjQueryは正しい方向にthisを修正しているってことだろう?
2019/03/31(日) 17:09:44.81ID:???
>>534
君が勝手に「良い」「悪い」の話しにすり替えているだけ
元々は>>510でしょ?
2019/03/31(日) 17:23:16.55ID:???
>>514 変えてないよ。
 ↓
>>532 そもそもthisを変えない。ということはありえないよ

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

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

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

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

forEachは引数に渡された関数を繰り返すだけなんだから
何にもバインドされてない関数のthisがグローバルになるのも当たり前よ
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だったんだな
545520
垢版 |
2019/03/31(日) 19:23:31.97ID:???
>>542
では、>>520にレスしたのが間違いだね
2019/03/31(日) 19:32:24.88ID:???
>>543
何か少し勘違いしてね?
イベントリスナーのthisArgがターゲット要素になるのは
ただ仕様でわざわざそうするように決まってるからで
何の自然で当然な動作でもなんでもないぞ
2019/03/31(日) 20:12:51.07ID:???
>>544
へー面白い
2019/03/31(日) 20:44:13.06ID:???
>>543
何か少し勘違いしてね?

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

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

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

だからってthisを変えたらダメでしょ
JavaScript のthis は、文脈によって、Global(window) を指す事があるから、ややこしい
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
2019/03/31(日) 21:03:38.59ID:???
>>549
アロー関数を使う場合はこうな。

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

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

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

何から何に変わったと主張しているの?
2019/03/31(日) 21:26:41.89ID:???
>>554
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);
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();
2019/03/31(日) 21:36:03.76ID:???
しかも>>556の場合、forEachの中のthisはundefined。
Global(Window)じゃない。
使い方によってthisがコロコロ変わる
2019/03/31(日) 21:38:01.10ID:???
>>555
ああわかった、何がわかってないのかが

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

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

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

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

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

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

じゃあ。

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

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

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

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

foo();

var bar = {
foo: foo
};

bar.foo();

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

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

>>561補足
function foo(){}

は関数文

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

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

これはちょっと乱暴w
565Name_Not_Found
垢版 |
2019/03/31(日) 22:37:49.34ID:rWRvnw+C
だった
2019/04/01(月) 00:21:49.34ID:???
>>558
> ただ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要素に直接バインドされていない。
2019/04/01(月) 00:23:56.82ID:???
ようするに、DOM要素にaddEventListenerで登録した
イベントハンドラの中でthisがDOM要素になっているのは、

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

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

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

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

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

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

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

便利だからわざわざthisを要素自身にして呼び出してる
便利だから。jQueryも同じ。便利だからそうしている。
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
2019/04/02(火) 12:42:52.91ID:???
>>596
thisが変わってほしい時は、function、
thisを変えたくない時は、アロー関数
使い分ければ良いんだよ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

↓に書いてあるとおり

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

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

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

そもそも、>>531の質問に対して>>532は的外れだったな
2019/04/05(金) 08:51:54.08ID:???
>>708

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

って話じゃね?
2019/04/05(金) 20:03:48.29ID:???
それをうまく逆手に取れば自然な位置偽装工作も可能だろう
2019/04/06(土) 00:15:23.15ID:???
あちこちのサイトで見かけるpopper.js って何をしているのでしょう?
2019/04/06(土) 00:17:26.32ID:???
そのくらい調べろボケ
2019/04/06(土) 00:33:43.84ID:???
>>715
調べて分からないのです 観察上はBootstrap使う時につきものみたいですが
2019/04/06(土) 06:52:54.05ID:???
移動してるとセルラーやWifiの電波状況、方位や加速度センサーの値が変化する
2019/04/06(土) 07:12:03.07ID:???
>>716
>>1
JavaScript を自ら学ぶ人のための質問スレッドです。
2019/04/06(土) 07:18:51.27ID:???
popper.jsぐぐっても分からない?
ならプログラミングの適性ないから止めてけ
2019/04/06(土) 10:53:44.12ID:???
ProgateのJavaScript終わったんだけど次何すればいいんだろ
https://youtu.be/RKcFIg1yHOI
↑こういうの真似しようとおもったけどどうなんだろ
2019/04/06(土) 14:57:17.08ID:???
昔作ったサイトからPopper.jsを外しても動作変わらんかったw
2019/04/06(土) 16:53:59.55ID:???
設計とかのことを考えたら結構その動画はヤバい気がするけどどうなんだろ
2019/04/06(土) 18:11:57.01ID:???
どうなんだろって質問なんだろうか?どうなんだろ
2019/04/06(土) 18:31:43.36ID:???
RPGなんて恐れ多い物に手を出そうとする奴は
間違いなく将来強い拘り持って孤立するへんくうな奴だけど
JS仙人になれる資格を有する
そういう奴は多少変な教え方されようがされまいが
すぐに自分の心理へとたどり着けるので問題はない
2019/04/06(土) 18:32:18.94ID:???
心理→真理 ね
2019/04/07(日) 11:31:02.53ID:???
JavaScriptで共有の値渡しだの参照の渡しだのいろいろ言われてるのは結局どういうことなのですか?
2019/04/07(日) 12:08:31.05ID:???
なにが?
2019/04/07(日) 22:57:21.90ID:???
>>726
単一存在にいろんな場所からいろんな名前が付けられていくイメージをするといいよ
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やブラウザは最新のものに対応してればいいです。お願いします。
2019/04/09(火) 00:09:33.21ID:???
「canvas 画像 合成」で検索すれば?
2019/04/09(火) 00:22:04.60ID:???
個人的にはcanvas一個にまとめたほうが楽で軽い気がする
2019/04/09(火) 06:16:41.96ID:???
OffscreenCanvasをいくつも持っておいて1つのCanvasにputImageでいいじゃん
2019/04/09(火) 17:28:10.05ID:???
javascriptってブラウザを使ってローカルで開くだけで動作するるですか?
2019/04/09(火) 18:07:06.32ID:???
はい
2019/04/09(火) 18:07:27.93ID:???
webページ右クリック名前をつけて保存→開いてみたらええで
2019/04/09(火) 22:26:33.63ID:???
>>732
すみません、もうちょっと詳しくお願いします
2019/04/09(火) 22:32:57.53ID:???
canvasって裏側でレイヤー複数持つ事できないの?
合わせてダブルバッファリングみたいにして一括描画、みたいな
2019/04/10(水) 04:34:15.00ID:???
すぐ上に方法書いてあるじゃん
2019/04/10(水) 05:24:18.22ID:???
canvas には、Win32 API の、BitBlt() みたいな、
転送元から転送先へのブロックコピー機能は、無いの?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

integrity= 

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

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

最初に、正解の盤面を作って、
そこから10〜20回ほど、ランダムに動かしてから、問題を作る
2019/04/14(日) 10:39:41.21ID:???
>>789
日本語の説明がないと結局ロジックがよくわからなんだです
2019/04/14(日) 11:33:49.77ID:???
ドットンストールにあるなら一ヶ月だけ金払って有料動画見まくれればいいんじゃないの
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>
2019/04/14(日) 12:05:14.70ID:???
>>799
知能が低すぎる・・・
2019/04/14(日) 12:21:05.23ID:???
>>804
生のチュートください
2019/04/14(日) 13:04:07.87ID:???
他のパズルに変えた方がよい

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

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

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

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

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

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

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

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

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


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

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);
}
}

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

そもそも、15パズルから入るのは変だと思う
DOM操作か何か、もっと基礎的なところから始めたら?
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というのがわかるのですが、これ一行ではデバッグしてもエラーになります
2019/04/15(月) 19:58:36.32ID:???
>>853
一行だけ実行してもそりゃエラーが出る
全体を通せばエラーにはならない
https://jsfiddle.net/obscd3ea/

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

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

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

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

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

<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>
2019/04/16(火) 11:03:09.37ID:???
>>860>>863
https://jsfiddle.net/p6q0bo7g/1/

すみません、追加で質問です。このような形で、2つに分割した状態になってます。
この時、左側のタブのaタグをそれぞれhoverした時、右側のiframeにそれを反映する方法
について調べています。クリック時に表示させるところまではいったのですが、
ホバー時にも同様に表示させるところでつまずいています。
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

¥でスプリットしてループで回して確認していくしかないでしょうか。
2019/04/16(火) 11:29:47.02ID:???
>>871
配列状の物を添字を使って削除する時は後ろからやるのがセオリー
for (j=tag[i].attributes.length ; --j >= 0; )
2019/04/16(火) 11:40:54.83ID:???
>>874
ご教示ありがとうございました
2019/04/16(火) 11:43:45.56ID:???
>>872
https://jsfiddle.net/rtezmdf0/
877Name_Not_Found
垢版 |
2019/04/16(火) 12:15:33.78ID:99qp+ZVK
>>866
類語もある方がより良いとは思うのですが
私が今求めているものは、ユーザーがうろ覚えのキーワードを入力しても欲しかった用語がマッチするようにするための
単語の意味ではなく【文字間の関係性】を計算するアルゴリズムで、
今は「カエル」なら「カ→エ」「カ→ル」「エ→ル」
のような繋がりでチェックしたり、他にも文字数の一致度などから適当にやってまして
より精度を上げるためにローマ字化したりしようかなどと考えたのですが、もうすでにある程度確立された素敵なアルゴリズムや、モデルがあるのではないかと思い質問しました。
2019/04/16(火) 12:32:58.91ID:???
>>854
これ、2、3行でデバッグできないんですかね
少ないコードで動作確認しないとどういう動きかわからないです
2019/04/16(火) 12:38:57.63ID:???
>>876
ありがとうございます。出来ました
2019/04/16(火) 12:48:48.88ID:???
>>878
jsのステップインを使うと良い
js chrome デバッガ
辺りで検索
2019/04/16(火) 13:04:35.75ID:???
>>877
省入力候補/推測変換のことか?
IMEの仕事を肩代わりしたいなら、変換用の辞書を用意するしかなかろう
2019/04/16(火) 13:32:39.97ID:???
>>877
レーベンシュタイン距離とか
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');
});
2019/04/16(火) 13:50:51.32ID:???
>>880
次はデバッガの使い方聞いてくるんじゃないのこの人
即時関数がわからんレベルなのになんで基礎から勉強しないんだろう
2019/04/16(火) 13:52:43.45ID:???
>>877
https://mieruca-ai.com/ai/levenshtein_jaro-winkler_distance/
2019/04/16(火) 14:33:43.04ID:???
>>883
getElementsByTagName()の返り値はArrayではなくHTMLCollectionだよ

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

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

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

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

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

https://jsfiddle.net/z5drg4Ly/
898897
垢版 |
2019/04/16(火) 16:55:54.13ID:???
ということで本題

https://jsfiddle.net/u3zbswhk/

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

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

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

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

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

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

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

>>901
相変わらず「脱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はシンプルになる。
907897
垢版 |
2019/04/16(火) 18:49:58.47ID:???
> 昔のコードはHTMLを組み立てるのに文字列を結合するというストイックなやり方でした。

まあ、こんな事書いてるし、昔のコードがクソすぎるってだけなわけでw
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のデベロッパツールから実行してみたのですが、どういう処理が行われているか確認するには、これをコンソールなどに出力してみるってことでしょうか
2019/04/16(火) 19:03:53.12ID:???
>>908
ステップインを使う
これ分からないならもう止めたほうが良いぞ
2019/04/16(火) 19:10:22.10ID:???
>>906
間違ってるものをドヤ顔で晒して人様の手を煩わせておいて失敬失敬はないだろ
2019/04/16(火) 19:47:00.17ID:???
>>909
ステップ実行とステップインは違うってことですね
近藤してましたが調べてみます
912897
垢版 |
2019/04/16(火) 19:48:22.28ID:???
>>901
https://ics.media/entry/17451/
> WAI-ARIAはHTML要素の属性を動的に書き換えなければならないため、生JSやjQueryで制御しようとすると、正直、骨が折れます。

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

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

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

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

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

だから、配列の要素の削除は、難しい
2019/04/17(水) 15:51:28.39ID:???
>>873
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 まで一致する
2019/04/17(水) 16:02:22.62ID:???
>>908
そんな、ややこしいものをやらなくて良い

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

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

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

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

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

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

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

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

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

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

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

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

配列のインデックスが負数の場合は、配列を後ろから数えるのも定番。
色んな言語を調べてないだろ?
942897
垢版 |
2019/04/17(水) 23:50:48.63ID:???
>>941
そもそも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
943897
垢版 |
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

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

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

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

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

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

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

と語っているね


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

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

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


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

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

"People don't hate ruby, people hate the ruby on rails community" "This" "+1 to this"
「Rubyが嫌いなんじゃなくて、Railsコミュニティが嫌いなんだよ」「それな」「ほんこれ」
965Name_Not_Found
垢版 |
2019/04/18(木) 16:42:56.13ID:50TA3Y6O
>>963
ある要素になんらかのデータを紐づけたいと思ったら使うのがdataset
・ある要素が処理対象か否かを表すフラグ
・JSライブラリ等に渡すパラメータ
・処理中のデータの一時保存先
なんでも好きなように使うがいい
2019/04/18(木) 17:27:28.90ID:???
>>965
classやidとはどう違うのですか?
参考サイト探したんですが、javascriptについては見つからなかったです
2019/04/18(木) 18:15:15.35ID:???
datasetはオレオレ属性作らなくても固有の値持たせられるし、setAttribute/getAttributeを使わなくても直に値を読み書きできるのがメリット
classやidで足りてるなら無理して使わなくてもいいよ
2019/04/18(木) 18:18:55.53ID:???
もらった15パズルのサンプルに含まれていたので、、、
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;");
2019/04/19(金) 03:56:40.90ID:???
>>961
JSの関数はクロージャになり得る能力、ようは要件を備えてるだけで
関数定義が実際クロージャな関数を作ってるのであって
new Function等で定義された関数はクロージャではないし、
デフォの関数のいくつかもクロージャではない
971897
垢版 |
2019/04/19(金) 08:10:45.35ID:???
>>970
JSの関数は全てクロージャーだが
クロージャーにならないものが有るというのなら
それかいてみて(笑)
2019/04/19(金) 08:19:53.05ID:???
function hoge() {
return 42;
}
2019/04/19(金) 08:29:17.99ID:???
PlayCanvasはunityを超えるか?
2019/04/19(金) 12:00:22.33ID:???
vscodeでデバッグしていると時々機能しなくなるのはなぜですか
特定する方法はありますか?
再起動すると治りやんす
2019/04/19(金) 12:09:16.11ID:???
>>973
今はgodotが勢いあるのでは?
2019/04/19(金) 13:19:21.72ID:???
>>971
クロージャというのは定義された場所のスコープと関数スコープがチェーンで繋がっているものを言うのであって
定義の仕方が特殊でそれに当てはまらないものはクロージャとは言えない
例えばネイティブ関数はチェーン先を概念的に持っていないし、
new Functionは生成された場所に関わらずglobalThisとリンクされる
977Name_Not_Found
垢版 |
2019/04/19(金) 13:25:13.17ID:YQCMjmdd
getElementで取り出した要素、例えば
<div class="hoge"〜〜〜 style="xxx">
の中からstyleもしくはxxxの有無を調べたいときはどうやってかけばいいですか?
indexOf("style")やindexOf("xxx")で試しているんですが上手くいきません
hogeを検索する場合、変数名.className.indexOf("hoge")で検索出来るんですがstyleになると上手くいきません
2019/04/19(金) 13:54:13.10ID:???
https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/style

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

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

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

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

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

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

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

テンプレは数スレ前のものを持ってきました
足りない場合は適当に追加してください
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 62日 15時間 43分 24秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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