X



+ JavaScript の質問用スレッド vol.135 +
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2018/07/31(火) 12:30:52.90ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
0166Name_Not_Found
垢版 |
2018/08/15(水) 00:46:01.09ID:???
非同期処理についての質問者は、
名前欄に、最初の書き込みの番号を入れてくれ

処理の基本は、all or nothing

A | B | C
というパイプラインがあって、B で失敗した際、A だけが更新されると、
データの不整合が起こり、データの一貫性がなくなる

データベースなどでは、roll back して、Aの更新前に戻す。
中途半端な更新をしたら、絶対にダメ!
0167Name_Not_Found
垢版 |
2018/08/15(水) 13:40:22.90ID:???
>>153,154
もうただのおしゃべりになるのであまり自ら事情をバラしたくないのだが、
その問題のために要件も含めて設計を大胆に見直す必要が出たってこと
/*このあと15行ほど書いたが削除した。察して欲しい。*/

>>155
勿論十二分に理解して書いてるよ
だって書く前にググったもの しっかりとね
2chに書いてるんだからそれくらいのことは当然してる
バカにしないで

>>その他のレスの人
アドバイスや意見をどうもありがとう
0168Name_Not_Found
垢版 |
2018/08/15(水) 13:58:02.23ID:???
> その問題のために

その問題を自分で理解してないんでしょ?
0170Name_Not_Found
垢版 |
2018/08/15(水) 14:28:09.61ID:???
js固有でもないプログラミングの基礎の用語を
書く前にググらなきゃいけない時点でバカにされても仕方ない

1、2回目を限界が来たと書いていたけど
要件定義不備設計不備に由来する不具合が原因の作り直しじゃん
0171Name_Not_Found
垢版 |
2018/08/15(水) 15:22:27.12ID:???
ちょっとでもぐぐってたらセッションという言葉の独自定義は避ける
0172Name_Not_Found
垢版 |
2018/08/15(水) 16:33:43.46ID:???
>>168
その問題というのは誰が見てもハッキリ分かるもの
度合い問題でもあるが
何を何に変えてそこから何に変えて良くしたか
3段階で解決できるものと言ったら

>>170
たしかになぁ
でも何とも言えんわ
正直言えば1回目で完成ですでも良かったわけだし
仕様はこうです、合わせてくださいってこちらから言える案件だし
つうか目的くらいしか決められてないしどういう機能があるべきかそれほど自明でもないし
そのくせ追加要望は未だにしょっちゅうしてくるし
ここまで聞いて分かったと思うけど、直接目的を達成するものだけを作ってるわけじゃないし

>>171
セッションは本来の呼び名を避けて適当に言ったんだよ!
ググってなくてすまんかったな!
よかったら良い呼び名を教えてくれ
次からそれを使う
0173Name_Not_Found
垢版 |
2018/08/15(水) 16:49:37.59ID:???
並列処理とか普通にやればいいだけなんだが
何に困ってるか説明できてないので答えようがない
まあ全てはこいつの能力不足だ
お前が教えるんじゃなくてお前が教えてもらうほうだ
0174Name_Not_Found
垢版 |
2018/08/15(水) 17:28:22.58ID:???
まずは端的かつ明確に回答を行えるようになることを目標にすべき
同僚の苦労が偲ばれる
0175Name_Not_Found
垢版 |
2018/08/15(水) 17:59:48.67ID:???
>>131の質問の内容からして自分の常識とは異なっている
実装手法なら、周辺環境や規約にもよるけど、だいたいこのように書くと言えることもある

でも設計だと一部を抜き出して語る意味がない
全体を知っている者同士の会話でもなければ良し悪しの判断基準がないから語りようがない

毎回個別に考えて調べて考えるのが原則
だから設計は単価が高くて人工が多い
0177Name_Not_Found
垢版 |
2018/08/15(水) 22:02:15.63ID:???
JavaScript関係ない話みたいだし
元質問者も多少おさまりつかないとこあるかもしれんけど
もうやめといたらどうか
0178Name_Not_Found
垢版 |
2018/08/16(木) 15:04:39.41ID:???
なんか先日からアプデ可能って出るんですがやっても必ず失敗します
何かあったんですか?
0179Name_Not_Found
垢版 |
2018/08/19(日) 17:54:52.02ID:Hds7LGpQ
if(true){
 ・・・
}else{
 ・・・
}
みたいな文を書くとエラーが出るのだが、ダメなのか?
0180Name_Not_Found
垢版 |
2018/08/19(日) 18:18:51.73ID:???
>>179
>みたいな文
というのがよくわからないので
if(true){ console.log(1) }else{ console.log(2) }

これ試してみて
0181Name_Not_Found
垢版 |
2018/08/19(日) 19:36:08.59ID:Hds7LGpQ
>>180
()内の条件が定数だと警告が出ていたようです。
0182Name_Not_Found
垢版 |
2018/08/19(日) 19:47:45.25ID:???
ようですってなんだよ大泉洋か何かかよ
0183Name_Not_Found
垢版 |
2018/08/20(月) 00:23:46.12ID:???
自分でlintかなんか使ってわざわざ警告出るようにしておいて
相談するってさっぱり意味が分からんな
0184Name_Not_Found
垢版 |
2018/08/20(月) 11:54:39.95ID:???
あれだろ
解決してほしいんじゃなくて話を聞いてほしいだけ

車が故障したと電話する女、クソまじめに解決のため診断方法をレクチャーしようとしちゃう男、みたいな
0185Name_Not_Found
垢版 |
2018/08/22(水) 08:56:05.23ID:A1pPKwOL
javascriptのクラスを駆使して何か作ってみたいんだけどどういう内容のものならクラスがバリバリ活躍できる?
車クラスを作ろう!とかそういう練習問題的なのは無しとして
0186Name_Not_Found
垢版 |
2018/08/22(水) 09:50:53.16ID:???
練習問題が欲しいけど練習問題的なのは嫌ですって
0187Name_Not_Found
垢版 |
2018/08/22(水) 11:11:27.40ID:???
車クラスは作れるのかな?
オレには作れん(´・ω・`)
0188Name_Not_Found
垢版 |
2018/08/22(水) 12:41:47.46ID:???
>>186
実践的なお題がないかと思いまして

動物クラスを継承して犬クラスを吠えさせる、みたいなのでは実際にはどういうシーンで役立つのかイメージがつかないのですが…
0189Name_Not_Found
垢版 |
2018/08/22(水) 13:10:48.11ID:???
実際にはどういうシーンで役立つのか知りたいというだけなら
classを使っててclassでないと困る実例を聞けばいいと思うんだけど
なんでjavascriptのクラスを駆使して何か作ってみたいの?
0194Name_Not_Found
垢版 |
2018/08/23(木) 21:24:14.89ID:csYFQA4h
<button onclick="if(typeof MyFunc == 'function') MyFunc();" ・・・
と言うような記述を見たのだが、
ifは何のためにあるの?
何が目的なの?
0195Name_Not_Found
垢版 |
2018/08/23(木) 21:32:24.88ID:???
onclickのとこを自動生成してるんじゃねーの
0196Name_Not_Found
垢版 |
2018/08/23(木) 21:36:30.53ID:???
>>194
それ悪い書き方

MyFuncに関数が入っていない場合(=バグ)
バグの場合にバグを無視するというコードになってる
0197Name_Not_Found
垢版 |
2018/08/23(木) 23:28:12.11ID:???
>>194
良し悪しはともかく目的がなにかと想像すると
MyFuncは別のとこで代入されてるとか
代入されるまではundefinedなりnullなり
0198Name_Not_Found
垢版 |
2018/08/24(金) 00:32:26.75ID:???
悪手かもしれないけれど結構好きw
0199Name_Not_Found
垢版 |
2018/08/24(金) 06:51:28.82ID:???
別にnullやundefinedが入ってても問題はないし
目的は呼べないものを呼ばないようにすることじゃなくて
呼べるものを呼ばなくすることだな
例えばNodeとかでV8に手を入れてtypeofを拡張してるとか
それで例えば呼ぶとエラーになるクラスのコンストラクタは'constructor'を返すようにしてるとか
一度しか呼ぶことを期待していない関数が呼ばれた後は'function'じゃなくすとか
十分に考えられる
0200Name_Not_Found
垢版 |
2018/08/24(金) 08:06:47.02ID:9ePMrMWo
MyFuncなんてふざけた名前付ける奴がそこまで高尚なことを考えてるだろうか
0202Name_Not_Found
垢版 |
2018/08/24(金) 09:47:25.35ID:???
MyCheepfuncとでも書けばよろしいか
0203Name_Not_Found
垢版 |
2018/08/24(金) 18:02:32.12ID:???
そうだよな!myFuncだよな!!
0205Name_Not_Found
垢版 |
2018/08/26(日) 13:37:17.36ID:???
>>199
>>194の事例なら、onclickを付け外しする方が圧倒的にスマート
0206Name_Not_Found
垢版 |
2018/08/27(月) 02:12:08.30ID:???
onclick="MyFunc()"
が一番スマート
0208Name_Not_Found
垢版 |
2018/08/27(月) 20:32:05.95ID:???
ジェネレーター関数で
function* g(){
const n=yield 0;
yield n;
}
var f=g();
console.log(f.next());
console.log(f.next(3));

nextで直前のyield部の変数に値を渡せる、みたいな機能がありますが
これをうまく利用した例などはありますでしょうか
ぱっと見どこに値を渡したのか?という見辛さに違和感があるのと
実行直前の値を変えたい、という状況が思いつきません
0209Name_Not_Found
垢版 |
2018/08/28(火) 02:54:06.46ID:???
普通受ける方も送る方もfor文で回しながら渡すだろ
0211Name_Not_Found
垢版 |
2018/08/29(水) 20:32:00.83ID:BL3o/gse
index.htmlで、JSの読み込みが三つあり
<script src="file1.js"></script>
<script src="file2.js"></script>
<script src="file3.js"></script>
では正常に動作するんだけれど、三つのファイルを単純に連結して一つにして、
<script src="fileAll.js"></script>
とするとエラーが出まくるんだが、一般に、このやり方はエラー出るの?
単純に連結しているから、三つに分離している場合と同じだと思うのだが。
0212Name_Not_Found
垢版 |
2018/08/29(水) 20:35:12.46ID:???
でない。理由は思いつくが、興味ないので他の人に任せる
0214Name_Not_Found
垢版 |
2018/08/29(水) 21:09:27.82ID:???
strictと非strictが結合してるとか
0215Name_Not_Found
垢版 |
2018/08/29(水) 21:51:10.55ID:???
ネームスペースがカオス状態
0216Name_Not_Found
垢版 |
2018/08/30(木) 02:12:49.36ID:???
前後のファイルがつながって、1文扱いにならないように、

ファイルの冒頭に、; を入れておけば?
0217Name_Not_Found
垢版 |
2018/08/30(木) 13:06:35.40ID:???
Q ○○したらエラーが出ます

A エラー内容確認してがんばって直せ
0218Name_Not_Found
垢版 |
2018/08/30(木) 15:50:26.75ID:???
でもエスパー能力高いやつって経験豊富だから大体どういう理由でエラーが出てるか予想できるよね
0219Name_Not_Found
垢版 |
2018/08/30(木) 16:25:10.54ID:???
でもでも言うまえに再現できるデモでも用意しろや
0221Name_Not_Found
垢版 |
2018/08/31(金) 14:58:47.93ID:???
恥ずかしいし・・・・・・
0222Name_Not_Found
垢版 |
2018/08/31(金) 21:42:38.54ID:???
恥ずかしいなら、質問しなければいい
0223Name_Not_Found
垢版 |
2018/09/01(土) 03:18:20.04ID:???
>>221
チンコ晒せといってるじゃないんだから。
Githubとかあんなところもその恥ずかしいという気持ちを乗り越えてからすべてが始まるんだぞ
0224Name_Not_Found
垢版 |
2018/09/01(土) 05:15:01.09ID:???
チンコかファイルかって言われたら俺はチンコを晒す
0225Name_Not_Found
垢版 |
2018/09/01(土) 09:39:29.79ID:???
>>221
その理屈だと、エスパーも恥ずかしくてコードを晒せない
0226Name_Not_Found
垢版 |
2018/09/01(土) 13:15:10.23ID:???
チンコより頭頂部を晒せ
0227Name_Not_Found
垢版 |
2018/09/01(土) 13:29:54.75ID:???
            ,.:::.⌒⌒:::::ヽ
            (::::::::::::::::::::::::::::)
           (::::::::::::::::::::::::::::::::::)
          (:;;;::::::::::::::::::::::::::::::::::::)
         (:;;;;;:::::::::::::::::::::::::::::::::::::)
          (;:::::::::::::::::人:::::::::::::::::ノ
          (::::::: (´・ω・`):::::ノ 
0228Name_Not_Found
垢版 |
2018/09/01(土) 22:16:40.35ID:???
jqueryのmapとjavascriptのmapって全然違いますよね
jqueryの方はreturnで配列返したら配列じゃなく展開されて値が代入されてました
なので配列で返したいときは
$().map(_=>[[]])
みたいに入れ子にしないといけない、でよいでしょうか?
0229Name_Not_Found
垢版 |
2018/09/01(土) 23:09:13.75ID:???
>>228
なんか根本的に間違ってるぞ。

jQueryのmapは二種類ある。
$.map と $().map だ。

前者は、(jQueryが開発された当時、存在しなかった)
JavaScriptのmap相当の機能を提供するものとして作られた。

後者はjQueryオブジェクト(=要素の配列をラップしたもの)に対して
mapを実行するもの・・・が基本ではあるんだが、jQueryオブジェクトというのは
いうのはDOMだけではなく任意のオブジェクトをラップすることが可能なので
いろんなものに使えたりはする。

で、JavaScriptのmapとして使いたいなら、$.mapの方を使う。これは配列が
mapメソッドの引数になっているという違いはあるがJavaScriptのmapと同じように使え、
真の配列だけではなくlengthプロパティがある配列っぽい(Array-like な)ものを
扱えるという便利さもある。

> みたいに入れ子にしないといけない、でよいでしょうか?
入れ子にしないといけないとかいうのは意味がわからん。
後者を変な使い方をしてるだけだろう。
あんたが欲しいものは前者だ。それ使っておけば悩むことなど無いはずだ。
0230Name_Not_Found
垢版 |
2018/09/02(日) 00:08:20.80ID:???
>>229
実際に試してみるとわかる
var arr=[1,2,3];
console.log( $.map(arr,_=>[1,2,3]) ); //[1, 2, 3, 1, 2, 3, 1, 2, 3]
console.log( arr.map(_=>[1,2,3]) ); //[Array(3), Array(3), Array(3)]
console.log( $.map(arr,_=>[[1,2,3]]) ); //[Array(3), Array(3), Array(3)]
ということではないかと
0231Name_Not_Found
垢版 |
2018/09/02(日) 00:23:21.84ID:???
>>230
マジかw それはしらなかった。

jQueryのmapってRubyでいうflat_mapだったんだ。
ってことはmapといいながら1対1での変換じゃなくて
要素を増やしたり減らしたりもできるってことか。

なんでjQueryのmapはdeprecatedにならないのかと
思っていたらそういうことだったんだな
0232Name_Not_Found
垢版 |
2018/09/02(日) 08:29:58.46ID:???
$.map, $().map

jQuery には、2種類のメソッドがある

$.メソッド名は、汎用的なユーティリティ関数で、
$().メソッド名は、this を持つ、インスタンスメソッド
0234Name_Not_Found
垢版 |
2018/09/02(日) 14:40:05.80ID:???
レシーバーに有益な値が渡されるという意味だろう
0236Name_Not_Found
垢版 |
2018/09/02(日) 19:19:10.92ID:???
thisを持てない関数とかメソッドってあるんか?
0237Name_Not_Found
垢版 |
2018/09/03(月) 11:57:20.99ID:???
thisを持つとかまた頭悪いオレオレ用語開発したなw
付き合ってあげるここの人たち優しい
0239Name_Not_Found
垢版 |
2018/09/08(土) 08:11:12.39ID:???
var tName = [];
var tNumber = [];
var i = 0;
var o = document.getElementsByTagName("a")[25];
for( i=6;i <=24;i++ ){
tName.push(document.getElementsByTagName("a")[i]);
tNumber.push(document.getElementsByTagName("a")[i-1]);
if(tName[i].textContent.includes("(1001)") == true){
tName[i].style.display = "none";
tNumber[i-1].style.display = "none";
}
}
if( o.textContent.includes('(1001)') == true ){
o.style.display = "none";
}
これ実行するとTypeError: tName[i] is undefinedって出るんですが原因わかる方いますか?
実行順序の関係だろうか.
0240Name_Not_Found
垢版 |
2018/09/08(土) 09:15:08.84ID:???
空のtNameにpushしてるから
ループ最初のi==6の時はtName[0]しかないぞ
0241Name_Not_Found
垢版 |
2018/09/11(火) 08:11:08.54ID:???
>>239
エラー出た時にブラウザでオブジェクトの中身覗いたら原因丸わかりじゃないですか?
いつもどういうデバッグしてるんですか
0242239
垢版 |
2018/09/11(火) 09:07:54.08ID:???
いつも割と気合と努力で(console.log)でゴリ押ししてたからなぁ汗
ブラウザのコンソールはエラーと警告が出るだけの場所だと思い込んでてまさかコード打ち込んでデバッグ出来るとは青天の霹靂だ
>>241
tNameは最初の一個しかないのが意味が分かりません
ほぼ同じソースコードだけど別のページだと動くのに.
ゴリ押ししたら動くのにforとarray使ったら動かなくなるのなんでなん
0244239
垢版 |
2018/09/11(火) 09:35:20.21ID:???
>>243
多分江戸時代とか…滝汗
0245Name_Not_Found
垢版 |
2018/09/11(火) 11:17:52.01ID:???
ループの中の if(tName[i].……の直前で
i と tName をconsole.log()にかけるコード1行入れりゃ理解できるんでね
0246Name_Not_Found
垢版 |
2018/09/11(火) 20:05:23.62ID:???
for使わずにtNameだけ書くと >>239

var tName = [];
var i=0;
//i=0からi=5は、何もしていない
console.log(tName); // []

i=6
tName.push('要素a');
console.log(tName); // ['要素a']
console.log(tName[i]);// undefined == tName[6]
i=7
tName.push('要素a');
console.log(tName); // ['要素a','要素a']
console.log(tName[i]); // undefined == tName[7]
//以下繰り返し
0247239
垢版 |
2018/09/11(火) 21:26:04.36ID:O/Ih3NeS
>>240-241,243,245-246
とりあえずこれで事なきを得ました。ありがとうございました。
var tName = [];
var tNumber = [];
var i = 0;
var o = document.getElementsByTagName("a")[25];
for (i = 6; i <= 24; i++) {
tName[i] = document.getElementsByTagName("a")[i];
tNumber[i-1] = document.getElementsByTagName("a")[i - 1]
if (tName[i].textContent.includes("(1001)") == true) {
tName[i].style.display = "none";
tNumber[i - 1].style.display = "none";
}
}
if (o.textContent.includes('(1001)') == true) {
o.style.display = "none";
}
0248Name_Not_Found
垢版 |
2018/09/20(木) 01:19:45.54ID:M6En9stL
質問です
JSというかYouTubeの問題かもしれませんが
iframeAPIを使ってYouTube動画を貼って、準備出来たら再生、とするのに

再生(playVideo())の前に消音(mute())した場合
http://jsfiddle.net/xvc70zn9/1/

消音(mute())しなかった場合
http://jsfiddle.net/q9x2Lfma/1/

Chromeで後者が再生されないのは、おま環でしょうか?
0249Name_Not_Found
垢版 |
2018/09/20(木) 07:03:57.75ID:???
そりゃiframe内の動画がユーザーアクション無しで音声流そうとすればブロックされて当然でしょ
いまデスクトップでもどんどん厳しくなてるんだから
WebAudioAPIとかもポリシー変更になるでしょ
0250Name_Not_Found
垢版 |
2018/09/20(木) 07:54:48.18ID:???
iframe自体けっこう嫌われてるからねぇ…
0251Name_Not_Found
垢版 |
2018/09/20(木) 08:36:18.13ID:???
俺よりは人に嫌われてないだろ
0252248
垢版 |
2018/09/20(木) 16:06:10.90ID:???
>>249
つーことは
俺環だけでなく、そちらでも再現してる?のかな?
0253Name_Not_Found
垢版 |
2018/09/20(木) 19:56:31.29ID:???
chrome://flags/#autoplay-policy
* Default
* No user gesture is required.
* User gesture is required for cross-origin iframes. <--
* Document user activation is required.
0254248
垢版 |
2018/09/20(木) 20:26:53.80ID:M6En9stL
>>253
それは知ってました
何れにせよこちらからのアクションは
postMessageで送っているようなので

不可解なのはなんでMuteすればOKなのかということです
なので、おま環なのかなーと
0256Name_Not_Found
垢版 |
2018/09/21(金) 03:16:51.27ID:dotAtO5R
window.addEventListener("load", function(e){
var list = document.getElementsByTagName('a');
ってやってるんだけど、aタグ一杯あるのにlistに空の配列が返される
しかも最近突然起こるようになったんだけど、何が原因かわかりますか
0257Name_Not_Found
垢版 |
2018/09/21(金) 04:44:56.02ID:VAKGU9vY
おま環、もしくは勘違いじゃね?
getElementsByTagNameが返すのは配列ではなくコレクションだから
配列が返ってるならおかしい
0258Name_Not_Found
垢版 |
2018/09/21(金) 06:53:34.00ID:???
>>254
なんで不可解なのかが不可解
ミュートだったら再生させることによる悪影響の可能性が小さいだろうってことは分かる?
モバイルではもっと前からミュートで見えてるビデオだけ自動再生可の仕様だったでしょ
そして最近デスクトップにも似た仕様が入ったでしょ

デベロッパーなら最低限このページのことくらいは把握しておかなきゃ駄目よ
https://www.chromestatus.com/features
0261Name_Not_Found
垢版 |
2018/09/21(金) 08:21:57.19ID:???
それは知ってました、がかんに障ったのだろう
0262Name_Not_Found
垢版 |
2018/09/21(金) 10:39:08.83ID:dotAtO5R
>>257
あ、配列じゃないのかこれ。NodeListというのが返ってきてlengthが0になっています
考えられるとしたらDOMがまだできていない等だけどloadイベント発火時にそんなことってあるのかな
0263Name_Not_Found
垢版 |
2018/09/21(金) 10:45:54.31ID:dotAtO5R
setTimeOutで待ってみても同じだから、DOM構築が間に合ってないってわけではないっぽい
0264Name_Not_Found
垢版 |
2018/09/21(金) 11:13:03.46ID:???
F12でコンソール開いてdocument.getElementsByTagName("a")って打ってみて
0265Name_Not_Found
垢版 |
2018/09/21(金) 11:28:14.50ID:dotAtO5R
>>264
やってみた。それだと正常に取得されました
■ このスレッドは過去ログ倉庫に格納されています

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