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

■ このスレッドは過去ログ倉庫に格納されています
2015/03/22(日) 16:19:45.75ID:nW67tQ7U
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

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


+ JavaScript の質問用スレッド vol.123 +
http://peace.2ch.net/test/read.cgi/hp/1423915644/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
2017/09/04(月) 23:46:16.66ID:ERq8KL0N
しかしこれは本当に本質的な問題で、ここでプチ日本語講座をやったところで解決しない。
馬鹿が馬鹿であることを自覚出来ないってのは常だからね。
短期的な解決法はとにかく韓国人というか
「議論が成立するレベルの日本語が使えない奴」を排除していくことだ。
これについては俺は何度も「お前ら自身が損をするから発言を慎め」と言ってきたが彼等は聞かない。
(まあ彼等は上手いつもりだからそうなるのも自然ではあるのだが)
だからどうにもならないよ。

レベルの低い奴が混ざるだけで迷惑だ、ということを彼等は認識出来てない。
そして彼等(というか在日韓国人コミュニティ)はこの理由で
「正統に排除」されるのを差別だといってゴネてきた連中だ。
東大が入試で馬鹿を「正統に排除」するのは区別であり、差別ではない。
同様に、2chで2chに不十分な日本語の奴を排除するのも区別でしかない。
彼等にはこれを理解する知能すらないんだ。
マジで彼等は腐っているし、本国韓国人からもゴミ扱いされて当然だ。

マジで韓国人は死ね

一朝一夕には解決しない。話しても通じない。
となると、「在日韓国人はいるだけで迷惑だ」ということを地道に彼等に教えてやるしかない。
在日韓国人が全員自殺してくれるのが一番助かるんだが。

なんつーか、彼等は迷惑行為を行っているのだが、その自覚がないんだよ。
そりゃ今後とも在日韓国人は死ねと言われ続けるだろうし、至極当然の成り行きでしかないのだが、
彼等はそれを差別だといってゴネるだろうし、
それに対して余計にブチ切れる奴もでるだろうしで、悪循環だね。

在日韓国人が全員自殺してこの悪循環を断ち切ることを切に願う。
つか、ゴキブリは半島に帰れマジで。
2017/09/05(火) 00:05:35.88ID:de0tAs+m
書き込み増えてないのに更新来てると思ったらそういう事か
2017/09/05(火) 02:35:39.68ID:v/8MOc6/
>>159
詳しすぎw
韓国人博士の商業を授けよう
2017/09/05(火) 02:36:12.97ID:v/8MOc6/
× 韓国人博士の商業
○ 韓国人博士の称号
2017/09/05(火) 23:21:08.39ID:aMThYtmb
俺は韓国人について詳しいのではなく、単純に状況を分析出来るだけだけどな。
匿名掲示板では不思議なことは起こらない、俺はこの点が気に入っている。
在日韓国人が本国でも嫌われているのは、在日韓国人自体がマジで糞だからだよ。
あらゆる点でね。ここに挙げたのも一つ。

C#のスレでも暴れてるだろ。
http://mevius.2ch.net/test/read.cgi/tech/1492843013/783

だが他の連中が呆れている。理由は、
1) そもそも日本人なら脳内補完されてしまう(気づかないかも、程度の誤字)
2) C#userなら当然何のことを言っているのか分かる
だからそこをあげつらうのはなんの為?って感じになってる。
ところが当の本人は本気で分かってなくて、煽って答えを出させようとしている。
マジで糞だろ。死ねでしかない。

在日韓国人みたいな馬鹿はいるだけで迷惑だ。
だから彼等が嫌われるのは当然であり、これは区別であり、差別ではない。
ということを周知徹底し、韓国人を無視するようにしていかないといけない。
つーか、そうしないと議論が進まない。

韓国人死ね

つっても結局は非韓三原則、これが一番分かりやすいのだが。

韓国人に対しては、
助けない、教えない、関わらない

しっかりと韓国人がクズであることを指摘しつつ、(攻撃されたら反論)
後は放置して勝手に死ぬのを待て、ってことだね。(助けない、教えない、関わらない)
韓国人に対してエネルギーを使うこと自体が勿体ない。
165デフォルトの名無しさん
垢版 |
2017/09/20(水) 21:50:19.54ID:ZyDsW00i
文字数制限の為、二回に分けて書き込ませていただきます。
各テーブルの背景色を条件に処理を分けたいと思い、いろいろと試していますが上手くいきません。
テスト用に書いたもので、背景色(#000000または#ffffff)ごとに合計値をresuleBまたはresultWに合計していきたいのですが、
背景色の取得がうまくいっていないようです。
今後別の処理を記述するため、できれば背景色をキーに分岐を行いたいと思っています。
解決の為、アドバイスをいただければと思います。
よろしくお願いいたします。
166>>165
垢版 |
2017/09/20(水) 22:01:50.45ID:ZyDsW00i
>>165
NGワードに引っかかってしまいコードが書き込めないのでまた、後ほど書き込ませていただきます。
167>>165
垢版 |
2017/09/20(水) 22:33:57.96ID:ZyDsW00i
function testForm(){
var table = document.getElementsByName("table");
var sumB = 0;
var sumW = 0;
for(i = 0 ; i <= 1 ; i++){
var line = table[i].parentNode;
var result = getComputedStyle(line,'');
if(result.background == "#000000"){sumB = sumB + parseInt(table[i].value);
}else{sumW = sumW + parseInt(table[i].value);}
}
var B = document.getElementById("resultB");
var W = document.getElementById("resultW");
B.innerHTML = sumB;W.innerHTML = sumW;
}

<table border="1">
<tr id = "line1" style="background-color:#000000">
<td><input type="text" name="table" value="0" onBlur=testForm()></td></tr>
<tr id = "line2" style="background-color:#ffffff">
<td><input type="text" name="table" value="0" onBlur=testForm()></td></tr>
</table>
<table border="1" style="width:30px;">
<tr id = "resultLine">
<td id = "resultB"></td>
<td id = "resultW"></td>
</tr>
</table>
</form>お願いいたします。
2017/09/20(水) 23:57:51.37ID:VZIyuCp2
>>165
まず背景色をキーにするのはダメ
なぜなら色をどうするかはCSSの仕事だから。
背景色の代わりにクラスを使う

document.getElementsByNameで table を取ってくるのが意味不明
この場合だと tr だろう?

ループの終了判定が1固定なのがだめ。trの数にするべき
2017/09/20(水) 23:59:37.05ID:VZIyuCp2
訂正。読み間違えた。ここはとりあえずOK。とりあえずだが

> document.getElementsByNameで table を取ってくるのが意味不明
> この場合だと tr だろう?
2017/09/21(木) 00:21:05.95ID:ZVbKGIwn
id = "line1" とか id を付ける理由がわからん。
サンプルコードなら余計なものは消すべし

tableは複数変えてくるのであれば、
tablesとかいう変数にする。
が、そもそも変数名が適切じゃない。
とりあえずfield(fields)に解明する

.parentNodeじゃなくて、.parentNode.parentNode

でここまでは序の口
2017/09/21(木) 01:12:09.67ID:ZVbKGIwn
ここまでの途中結果
https://jsfiddle.net/52qcoLt7/3/

resultB と resultW の2つを一つのループで計算してるから
処理がわかりづらくなってる。
別々に計算する。そのための関数を作る
https://jsfiddle.net/52qcoLt7/4/

細か不要なところを削る
https://jsfiddle.net/52qcoLt7/5/

これ以上短くするにはjQueryがないと逆に面倒なのでjQuery化
https://jsfiddle.net/52qcoLt7/6/

sum関数を使って少しわかりやすくする
https://jsfiddle.net/52qcoLt7/7/

sum関数などというものを自分で作るよりlodash使ったほうがいいや
https://jsfiddle.net/52qcoLt7/8/

ES6のアロー関数を使う
https://jsfiddle.net/52qcoLt7/9/

もう関数の中にまとめちゃえ
https://jsfiddle.net/52qcoLt7/10/

見づらくなったので修正
https://jsfiddle.net/52qcoLt7/11/
2017/09/21(木) 01:16:29.67ID:ZVbKGIwn
修正後
$(document).on('blur', '[name="input"]', function() {
 const toInt = el => parseInt(el.value);
 const getValues = selector => $(selector).find('[name="input"]').get().map(toInt);
 $('#resultB').text(_.sum(getValues('.classB')));
 $('#resultW').text(_.sum(getValues('.classW')));
});

<table border="1">
 <tr class="classB">
  <td><input type="text" name="input" value="0"></td>
 </tr>
 <tr class="classW">
  <td><input type="text" name="input" value="0"></td>
 </tr>
</table>
<table id="result" border="1">
 <tr>
  <td id="resultB"></td>
  <td id="resultW"></td>
 </tr>
</table>

.classB {
background-color: #000000;
}
.classW {
background-color: #ffffff;
}
#result {
width: 30px;
}
173>>165
垢版 |
2017/09/21(木) 21:43:40.32ID:+hyTnlbF
>>168
ご回答ありがとうございます。
無事解決しました!

結果vbaで作り直すことになりましたが……
今回のことも一つの経験として、次につなげたいと思います。
174デフォルトの名無しさん
垢版 |
2017/09/26(火) 17:15:57.30ID:UanF2VW9
・「DOM要素」「JavaScriptオブジェクト」
 「文字列」ってどういうふうに認識を分ければいいですか、
・どういうときに、「DOM要素」をいじり、
・どういううときに「JavaScriptオブジェクト」で処理し
・どういうときに「文字列」として扱うべきなのか教えてください。
175デフォルトの名無しさん
垢版 |
2017/09/26(火) 17:18:46.94ID:UanF2VW9
・具体例

> $0
<div class=​"guide">
​<a 略> </a>​"
|"<a 略> </a>​"
|"<a 略> </a>​"
|"<a </a>​
</div>​

------------------------------------------------------------------------------

> dir($0)
VM22805:1 div.guide
accessKey: ""
align: ""
assignedSlot: nullattributes:
NamedNodeMap {0: class, length: 1}
baseURI: "https://www.2ch.net/";childElementCount: 4
childNodes: (9) [text, a, text, a, text, a, text, a, text]
....

------------------------------------------------------------------------------

> $0.innerHTML
"
​<a 略> </a>​"
|"<a 略> </a>​"
|"<a 略> </a>​"
|"<a </a>​
"
2017/09/27(水) 12:23:59.68ID:p2MS+Nsv
山田祥寛(よしひろ)、翔泳社
10日でおぼえる jQuery 入門教室 第2版

この本を読め
2017/10/04(水) 18:54:10.62ID:QAubw1tX
http://www.myu.ac.jp/~akizuki/sct/js/picture/pc_size.htmlみたいに
入力して指定した要素(div等)の大きさをリアルタイムに変えられるようにしたいけど、コードうまくできない
Chromeとかのデベロッパーツールを使えばいいじゃんと言われるオチだけど、cssとか詳しくない人に入力してチェックしてもらうためなので
ググっても関係ない情報ばかり引っかかるお
2017/10/04(水) 18:57:08.16ID:oEKHra+I
愚痴だけならよそでやってくれ
2017/10/04(水) 20:37:27.97ID:XYwgRbbh
>>177
一行目から行くぞ。
今時DOCTYPEを使わないのはありえない
META HTTP-EQUIVが大文字だったり小文字だったり、意味もわからずコピペしている証拠
今時Shift_JISとかありえない
languageは古い属性いまどき使わない
関数の中の変数にvar(もしくはletやconst)がない
evalは使うな
; の前にスペースはいらない
document.size.value_xなんて参照はいまどきしないgetElement○○を使え
bgcolorなどの物理属性は使うなcssを使え
centerなどのタグも使うな
brは連続して使うな
tableじゃない場所にtableを使うな
20年ぐらい前に素人が書いたコードにしか見えない
2017/10/04(水) 22:11:21.81ID:9uS2wtG9
概ね同意だが……br連続って駄目なん?
181デフォルトの名無しさん
垢版 |
2017/10/04(水) 23:54:58.26ID:AL97hIHS
jqplotで凡例の項目の一部をデフォルトfalseにしたいのですが
どのようにすればできるでしょうか?

例えば以下のサンプルサイト様の凡例「花子」を
初期起動時にはデフォルトでfalseにするイメージです
http://alphasis.info/2012/04/jquery-plugin-jqplot-line_charts-legend-numberrows/

よろしくお願いします
2017/10/05(木) 01:58:15.39ID:RWFlOlgJ
web制作管理板の、jQuery スレに、書き込んだ方が良さそう
183183
垢版 |
2017/10/05(木) 06:42:50.41ID:lUKxKZuz
すみません、自分一人ではどうしても解決できないことが有ってご質問させていただきます。

【やりたいこと】
任意の数の制御点(0=≦x =<511、0=< y =<1000)を格納した配列を基に、三次Bsplin補完を実行し、
生成された曲線の座標からx=0からx=511までをインデックスとして、y座標を出力したいのです。

任意の数の制御点を生成して、昇順に並べる関数は作りました。
また、Bsplin補完を実際に生成する関数もネットから拾ってきて既に出来ているものがあります。

次にコードを載せます。
184183
垢版 |
2017/10/05(木) 06:51:04.01ID:lUKxKZuz
function interpolation(top_elements){

var sp = new Spline();
sp.init(top_elements);

var t = variation;/* any value as parameter */ ;
var val = sp.culc(t);

}


このようなものです。top_elementsは私が作った[x,y]を任意個格納した二次元配列です。
Spline()がBspline補完をする、外部から拝借した関数になります。

tの値を変えたりして何度かやっているのですが、曲線を生成した、ということは、
xもyも連続的なはずですよね?xが512個のインデックスだとしたら、それに対応するyは
当然滑らかにはならないでしょうが、それでもいきなり飛び出た値が出るとか、そういったことはないと思います。

今のままだと、ほとんどxの値に対してランダムというか、作っている人間には突飛な値ばかり出力されてしまいます。
ようするに滑らかな曲線にならないのです。

どなたかご教授お願いします・・・Spline関数に間違いはないと思います。
185183
垢版 |
2017/10/05(木) 07:23:50.95ID:lUKxKZuz
補遺:二次元配列top_elementsは、xの昇順になっています。
2017/10/05(木) 15:39:58.45ID:SUARUJDC
アルゴリズム調べて自分で書けよ
十数行で書けるんだからさ
2017/10/05(木) 18:06:29.65ID:awWISc0p
>>182
jquery寄りの投稿でした
出直してきます
188183
垢版 |
2017/10/05(木) 18:50:12.30ID:lUKxKZuz
>>186

そうします。
そもそもスプライン補完とスプライン曲線を混同していました。
制御点の間を結ぶのがスプライン補完なんですね・・・

勉強不足で失礼しました。
2017/10/05(木) 21:37:12.37ID:mF/3dliN
学校の宿題は自分でやってください
2017/10/05(木) 21:48:37.53ID:k7vHxPO6
先生です。見てますよ。
2017/10/05(木) 22:47:29.02ID:SUARUJDC
別に宿題でも良いんだが
この手のアルゴリズムはちょっと調べたらCやJavaなんかでの実装が山ほど見つかるじゃん
コピペ手直しならまだ宿題やったってことで良いと思うけど
そこまで人にさせるのはちょっとね
192デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:12:32.57ID:gy3l/p8u
すみません質問なのですが
HTMLファイルを IE11 でローカルで開いて遊ぶゲームの制作中で
データを保存する機能の部分でエラーが出ます。

Chromeだと問題ないのですがIE11だと動きません。
(未定義または NULL 参照のプロパティ 'setItem' は取得できません)

var storage = localStorage;
storage.setItem("item1", "soda");
console.log(storage.getItem("item1"));

IE11の仕様でローカル書込できない場合
何か回避方法はありますでしょうか。
2017/10/06(金) 00:37:43.35ID:TJk1AKwf
ローカルで開いてもらうんなら
そもそもElectronとか使って配布すれば良いじゃない
2017/10/06(金) 01:37:47.85ID:tqIbkLAn
jagarikin

スーパー鳥スロット
http://jsdo.it/jagarikin/EjpL

これを参照。
ソースコード中を「Storage」で検索して、研究しろ
2017/10/10(火) 15:40:09.98ID:nIcnTX/z
次々にDOMの内容が時間とともに書き換わるホームページで
特定の要素が開いたときにすでに存在しているか、これから存在するか、
の2パターンのうち、存在するまで待って何かするにはどうすればいいですか。
やったことはタイマーで3秒くらい待ってから調べる方法ですが
低スペックのパソコンだと時間がズレるのでつかえませんでした。
2017/10/10(火) 19:16:14.99ID:aq9ImRxa
ハックならsetTimeoutで十分でしょ
きっちりやりたいのならMutationObserverでも試してみたら?
197192
垢版 |
2017/10/10(火) 23:39:33.60ID:2O1kjtT1
>>193
>>194
助言ありがとうございます。
これらを試してみます。
2017/10/11(水) 00:31:33.94ID:brH66jkE
スマホのwebアプリを作ってるのですが、beforeunloadのようにホーム画面に戻った時や
強制終了した時に発火するイベントはありますか?
iOSとandroidの両方に対応させたいです。
宜しくお願い致します。
2017/10/11(水) 07:25:31.32ID:1JkTZdtO
>>194
ありがとうございます。
200デフォルトの名無しさん
垢版 |
2017/10/12(木) 00:26:26.49ID:yL279Uuu
phantomJS使って画面キャプチャして保存してるんですが
どうしても画像が保存されません…
htmlを出力してみるとアクセスは出来てるみたいなんですが。
コードは以下です。
var page = require('webpage').create();
page.open('http://yahoo.co.jp', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('example.png');
}
phantom.exit();
});
2017/10/12(木) 00:31:54.06ID:yL279Uuu
http://www.ugtop.com/spill.shtml
ここ見るとMIMEタイプが以下になってるのが原因でしょうか?
普通のブラウザでアクセスするのと比較するとこれくらいしか違いがないので。
[phantomJS]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Chrome]
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
2017/10/12(木) 00:56:54.00ID:BE/Y4M/4
>page.render('example.png');

render は、画面を保存する関数なのか?
2017/10/12(木) 01:39:40.89ID:yL279Uuu
>>202
ここ見てやったんですが、保存までやってくれるんじゃないんですかね?
ttps://qiita.com/makoto1007/items/a54ff3ded2114a0d5433
2017/10/12(木) 03:24:44.94ID:BE/Y4M/4
1行ずつ、デバッグ実行して、エラーメッセージを取得して、そのメッセージで検索する

ファイルI/O 関連のエラーなら、ブラウザが対応していないとか、
フォルダが無いとか、書き込みできないとか、アクセス権限とか、色々ある

まず、どの原因か、エラーメッセージを取得して、解明する

Linux なら、strace のような、
OS のAPI の呼び出しをチェックするような、コマンドがあって、
どのAPIでエラーが起こっているのか、わかるけど
205デフォルトの名無しさん
垢版 |
2017/10/13(金) 13:57:58.99ID:OVzYuRNW
function Hoge() {
}
Hoge.piyo = 123;
var hoge = new Hoge();

とかした場合にhogeからHoge.piyoにアクセスする方法はある?
2017/10/13(金) 14:54:34.78ID:ECjh9wjN
hoge.constructor.piyo
207デフォルトの名無しさん
垢版 |
2017/10/13(金) 23:41:18.31ID:JHJOvcP0
関数をコンストラクタにして、インスタンスを作りたいのか?

var A = function(x) {
this.y = x;
}

var aa = new A(3);
var bb = new A('a');

console.log(aa, bb);
2017/10/14(土) 09:16:31.69ID:vAiN4XDf
これとは意図が違うの?
function Hoge() {
}
Hoge.prototype.piyo = 123;
var hoge = new Hoge();
console.log(hoge.piyo);
2017/10/14(土) 11:14:33.00ID:rczcWznS
インスタンスの意味がわからないのなら、
オブジェクト指向を知らないという事だから、JavaScript は無理

JS は、prototype と言って、普通のオブジェクト指向じゃないから、さらにややこしい

まずこの本で、普通のオブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

それから、JSのprototype を学ぶ
2017/10/14(土) 12:52:58.47ID:ZBrjxXQC
いきなりprototypeでいいんじゃないかな。
たしかにjsのprototypeは分かりにくいけどクラス使う言語からやってくると、もっとわかんなくなりそう
2017/10/14(土) 13:33:10.91ID:6KISst0f
JavaScriptでもclassからやったほうがいいんじゃないかな?
classほうがわかりやすいし。それからprototypeでも遅くはないよ。
そもそもprototypeって普段から意識して使ったこと無いしね
内部実装よりも言語仕様の方が重要
2017/10/14(土) 17:00:10.76ID:PFh9gSOM
分かりにくいのはprototypeプロパティの意義であって
それはプロトタイプベースの本質ともオブジェクト指向の本質とも関係はなく
ただのJSのチンケな旧クラスシステムということでしかない

学習としては__proto__を使って素直で本質的なプロトタイプベースOOPを覚えるか
class構文を使ってよりまともな新クラスシステムに慣れる形が良い
2017/10/14(土) 22:49:28.49ID:zrGXBjtr
>>206
できたわサンクス
214デフォルトの名無しさん
垢版 |
2017/10/15(日) 01:15:59.00ID:y0fiNdyH
class {
プロパティ
メソッド
}

普通の言語で、これで済む所を、JS では自分で実装していかないといけない

メソッドは、__proto__ で、親クラスへつなげて行くとか、
実行環境を作る人と、同じ技術を学ばなければならない。
こんなのは、インタープリタを作る人の話

オブジェクト指向をわかっていない奴だと、
.constructor, .prototype とか、何もわからずに使うだけ
2017/10/15(日) 05:30:29.29ID:8UsxszRz
それはちょっと違うかな
物は言いようでクラスに縛られること無くOOPが出来るというのはプロトタイプベースのメリットだけど、
だから自作しないといけないというわけではなくてプロトタイプベースに標準のクラスシステムがあっても何も矛盾しない

というかJSはES5までプロトタイプの設定ができなくて
予め用意された貧弱なクラスシステムを使わざるを得ないといけないということが問題で、
むしろ変わったクラスベース言語と言っても良いくらいだった
.constructor, .prototypeもオブジェクト指向の本質とは何の関係もない、ただJSのクラスシステムの癖なだけ

というか元々JSは手続き型チックに使うことを想定された簡潔なDOM操作スクリプト言語として作られたのであって
それに一応OOPもできますよと言うことでnew演算子を取ってつけただけ
プロトタイプベースなのも、崇高な目的があるわけじゃなくて
OOPが最低限できる素朴な仕組みを用意できれば良かったから
2017/10/16(月) 11:07:06.61ID:FZpcfz8T
なんでもありの言語にお堅い規約やらなんやらを詰め込もうとするから無理がでてくる
2017/10/16(月) 11:28:22.60ID:S65ZEl8x
まあ単に素朴なだけだけどね
鋼の様な硬い制限は言語のメリットを殺すだけで良くないが、一方で柔軟さ活かせばゴムの様に「矯正力」を発揮させる事ができる
固い考え方に於いての問題を問題として弾くのではなく、問題を飲み込み問題では無くす事ができる
その様にJSらしいプログラミング思想を受け入れることがJS克服の鍵
2017/10/16(月) 21:47:15.44ID:PHvG/+lj
jsは凄くやらかい言語だよね。欲を言えばマクロが欲しいけど、現状でも割と何でも出来る
2017/10/17(火) 01:16:06.64ID:1Z+ZTC/f
マクロはsweet.js型のが検討された事があるがまだまだデコレータとか先に検討すべき機能はたくさんあるし
Object.observeみたいにその時の流行りと勢いで大胆な機能を入れると、後悔することが教訓になっているので慎重にもなるだろう

今は立案から策定までのペースが早くて10年後もその機能があって良いのかを考えにくくなってる
慎重で優秀なメンバーがいるおかげか高Stageでギリギリ落とされるものもチラホラ
その時は不満でも1年くらいして落ち着いて考えてみるとやっぱり入れ無くて良かったのかなと思える
2017/10/17(火) 08:50:09.14ID:JpL3v0uM
そういえば末尾最適化が来てたっけChromeに
あれアロー関数かつ三項演算子でも使えるんかね。今度実験してみよ
221デフォルトの名無しさん
垢版 |
2017/10/17(火) 23:45:33.60ID:h1VDlomm
すみません洋書でも知ってたら教えて頂きたいのですが、
jqueryをネイティブのJSに書き直す方法を網羅した
リファレンス本や虎巻、早見表等の書籍がありましたら
教えて下さい。
2017/10/18(水) 00:40:19.37ID:HhDhJUF4
>>221
不完全なのならネットにいくらでもあると思う。
でも網羅してるのはないだろうね。
例えば、onの二番目の引数にselectorを使用した書き方(旧delegate)とか
置き換える方法が書いてあるの見たことない。
http://js.studio-kingdom.com/jquery/events/delegate

網羅しているのがあれば、jQueryがどれだけ複雑な処理を
簡単にかけるかってのがよく分かるんだけどな。

この際だからネイティブのJSに置き換えるんじゃなくて
ReactとかAngularに置き換えたら?
はっきり言って他のフレームワークに置き換える意味はあるけど
jQueryをネイティブのJSに置き換える意味は殆どないよ
2017/10/18(水) 01:18:00.87ID:BXrTaZiI
jQuery は、タグにイベントハンドラーを付けて、

そのタグの先祖のタグを削除しても、メモリリークをしないほど、すごい!
2017/10/18(水) 10:01:32.88ID:DiuuPMDh
jQueryをどう使ってるかによるんじゃない?
Promise、Animation、Fetchなんかは置き換えできるよね
でも一番地味な要素の取得・操作やイベント周りは結局ラッパーを書くことになると思うよ

そこだけjQuery使うというのも大有りだけど、もしasync-awaitを広範囲に使っているのなら
組み合わせが難しくなるので完全に外すことを検討して良いと思う

awaitとイベントを柔和させるためにはasync-iteratorやObservableが必要だけど、まだ実装されてないからね
まあwhile(await)を使って工夫すればなんとかそれっぽく書けるんだけど、
今はまだObservable系のフレームワーク使った方が良いかもね
2017/10/18(水) 21:29:42.35ID:HhDhJUF4
jQueryのAjaxは、Fetchには置き換えられないよ。
Fetchは仕様のレベルでJavaScriptのXMLHttpRequestの機能の
一部しかサポートされていない。今新しい仕様策定中

Promise(Deffered)は仕様が少し違うけど、
これ実質Ajaxぐらいしか使ってないので、Fetchが置き換えれないのなら
Promiseに置き換える作業も発生しない。

Animationは置き換えは置き換えでもJavaScriptではなくCSSに置き換えだね

jQueryを使ったコードがたくさんあるなら、比較的最近のブラウザでしか
動かないasync-awaitを使っていることはないだろう

将来はasync-iteratorやObservableに変わるということは
今JavaScriptネイティブの古き良きaddEventListenerに変更する意味はあるのだろうか?
あと数年ブラウザネイティブでasync-iteratorやObservableがサポートされるまで
jQueryのままで良いんじゃね? どうせまた変えなきゃいけなくなるし。
コードは少ないほうが置き換える手間も少なくなるよ
2017/10/18(水) 21:42:54.57ID:DiuuPMDh
Fetchで置き換えられない具体的で有意義な例を出して欲しい
例えばキャンセルは出来るという議論前出てたよね
2017/10/18(水) 21:43:41.72ID:HhDhJUF4
進捗状況は取得できないって結論出てたよね?
2017/10/18(水) 21:49:34.17ID:HhDhJUF4
キャンセルに対応しているブラウザないみたいだし
https://developer.mozilla.org/en-US/docs/Web/API/AbortController
229221
垢版 |
2017/10/18(水) 23:24:44.84ID:gezDC8oz
皆さんご助言ありがとうございます。
ReactとかAngularも検討してみます。
ネイティブの実装方法知らなくても
結果が同じなら書き換えなくていいかもです。
どうもありがとうございます。
2017/10/19(木) 02:13:50.99ID:EggJcvPa
>>224は脱jQueryの指針を表したつもりで
jQueryのそれと全く同じ使い勝手のものが標準にあると言う気もないけど
そもそもjQueryの機能を完全にカバーできるかで考えるのも変だと思うけどな

因みにキャンセルや進歩状況はbody使えばできるんでなかったか?
2017/10/19(木) 08:00:15.95ID:o0C7Dgua
調べてみた
キャンセル:
res = await fetch(''); reader = res.body.getReader(); reader.cancel(); OR res.body.cancel()
ダウンロードプログレス:
res = await fetch(''); reader = res.body.getReader(); ......
アップロードプログレス:
(できない)

ただし注意点としてプログレスは勿論キャンセルも実質、最初からReadableStreamで取って行ってるときでないと使えない
つまり、req.text()と先にしておいて、後でそれを予想外に長引いているからとreq.body.cancel()などキャンセルしようということはできない
まあプログレスやキャンセルが必要なのって大きいファイルの取得のときでしょ、
それで大きいファイル取得するときは最初からblobチャンク取っていく形で良いでしょ、ってことなのかもしれないが
一応素晴らしい解決方法もある

Response、body、ReadableStreamが再利用不可なのが問題なので、新しく作ってバイパスしてやればいい
つまり、ストリームに割り込むという考え方が必要
res = await fetch(''); reader = req.body.getReader();
res2 = new Response( new ReadableStream({...readerから読み込む...}), {...ヘッダを複製...}); ←キャンセルしたりプログレスが取れる
text = await res2.text()
2017/10/19(木) 08:22:28.68ID:o0C7Dgua
あーでもアップロードプログレスはできないって情報あったけど
よく考えたらrequest bodyにストリーム使えるわけだから出来そうだな
233名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 09:36:57.74ID:dFN+CZG0
JavaScriptの配列で中身はあるのにforinがまわらない、chromeの開発ツールで見ると1行目の[]の中身がなくて、>でオブジェクト開くと中身があるみたいな状態なんだけど、どなたか経験あります?
説明が難しくて伝わらなかったらごめん
2017/10/22(日) 10:14:35.32ID:eb/3UN8i
Array.prototype.forEach() を使う

for in は使わない
2017/10/22(日) 11:50:40.07ID:HjaIXmCn
せめてスクリーンショットでも貼ったら?
2017/10/22(日) 16:00:06.51ID:ZfX9FkbY
配列(Array)の場合はfor inじゃなくてfor(var i=...) とか forEachを使う
詳しくはググれ
237名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 16:05:57.85ID:j2iheZbd
配列(Array)の場合はfor inじゃなくてfor(var i=...) とか forEachを使うのはなぜですか?
2017/10/22(日) 16:19:41.29ID:sDdgCD4Q
せめてスクリーンショットでも貼ったら?
239名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 16:25:42.64ID:j2iheZbd
>>238
そうするとわたしの秘密の情報も漏れてしまうのでイヤです。
2017/10/22(日) 16:26:43.93ID:sDdgCD4Q
ここだけの秘密にするから大丈夫!
241名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 16:38:06.12ID:j2iheZbd
>>240
じゃあ指切りげんまんしてくれるかな?
2017/10/22(日) 16:48:26.51ID:sDdgCD4Q
>>241
早く。こっちは準備OKだよ。
ディスプレイから指出して!
243名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 17:07:32.86ID:j2iheZbd
>>242
じゃいくよ。
あなたも指出して。

  _n
 ( l    _、_
  \ \ ( <_,` )
   ヽ___ ̄ ̄  )
     /    /
「指切りげんまんウソついたら針1000本の〜ます」
244名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 17:32:49.16ID:j2iheZbd
こら、早く指出せよ
2017/10/22(日) 17:45:19.81ID:sDdgCD4Q
指出してるよ。お前のディスプレイが対応してないんじゃないの?
246名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 18:03:02.65ID:ZsHOZNag
>>245
何でそういう嘘つくの?
2017/10/22(日) 20:20:06.20ID:sDdgCD4Q
自分が嘘をついたからって、
他人も同じだと思わないように
2017/10/22(日) 20:58:40.19ID:jvrtRUSZ
Win+Shift+Sで切り抜き画面取れるだろ
249233
垢版 |
2017/10/23(月) 07:04:58.81ID:dBI0Tow6
>>239
知らない間に私に成り代わった何者かが
投稿していたようだ。

foreachね。やってみるわ。
サンクス
250233
垢版 |
2017/10/23(月) 07:14:40.31ID:dBI0Tow6
すまん、あと連想配列なんだわ。
キャプチャは今携帯だから貼れないから後ではる
2017/10/23(月) 11:26:08.53ID:a7vEnu+7
配列じゃなくて連想配列?
じゃあそれこそが原因じゃん
252デフォルトの名無しさん
垢版 |
2017/10/23(月) 13:24:35.32ID:EOed3a7c
自己解決しました。
ファイルを配列に打ち込むライブラリが非同期だったので、処理で使えなかったみたい。
初歩的なミスでした
2017/10/23(月) 17:29:06.71ID:Ig1NMcyK
多分もう少し、『誠実に』質問できてたらその日中に解決したと思うよ
ついでに見てる人を困らせることも荒らされることも無かった
2017/11/05(日) 08:20:11.81ID:30Y/ALms
node.jsの質問もここで大丈夫ですか?

winstonで取得したdiscordのログをdropboxに上げたいんですが、
ローカルにファイルは保存されているのに
ファイル名の変数が未定義とのエラーが出ます
どうすればうまく定義できるんでしょうか?

https://imgur.com/6Pk8q1b
実際の実行結果がこれで
https://imgur.com/ti3Pdkp
ローカルのファイル一覧がこれです
何度も試した結果大量のファイルが溜まっています
https://www.axfc.net/u/3860035?key=source
件のコードがこれです
スクリプトの名前は読み替えて下さい
まだ書きかけなので不要なライブラリも呼び出したりしており、
スパゲティ化してると思いますがご容赦ください
よろしくお願いします
2017/11/05(日) 11:55:47.11ID:30Y/ALms
ひとまず自己解決
varとかconstとかってローカル変数だったのね……
普段使わないから知らなかった
スレ汚し失礼しました
2017/11/05(日) 11:57:07.72ID:qm0+5m87
100時間悩んでも分からなそうな質問だけにして
257デフォルトの名無しさん
垢版 |
2017/11/13(月) 07:37:16.57ID:Cp9C2uqN
コメントで
/*!
...
*/
のように ! がついてるコメントの名称と意味を教えてください
2017/11/13(月) 10:59:35.62ID:AfQlhP1w
SASS なら、圧縮しても削除されないコメントだけど
2017/11/13(月) 18:01:54.37ID:RXMQG+No
Googleは最近そういう記号でもまともに検索できるようになったんだからググったら良いと思うよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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