+ JavaScript の質問用スレッド vol.142 +
■ このスレッドは過去ログ倉庫に格納されています
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください
■規則/推奨ルール
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
■前スレ
+ JavaScript の質問用スレッド vol.141 +
https://mevius.5ch.net/test/read.cgi/hp/1562318008/ ごく少数の人が必要性を主張しているからと言ってそれを大多数に押し付けることはおかしい
少数意見は否定されるべきではないが、多数派と独立して存在すればいいだけの話で多数派に少数派の意見を強要するのは間違っている >>749
ID出ないスレなんかほとんどないから普通は知らないし面倒だよな
メルアド欄のsageを書き換えるんだ
>>750
デフォで非表示だからそうしてるだけで多数派ではないし支持派が自演して多数に見えてるだけ >>751
それ言い出したら、ID出してない時点でどっちもどっち >>751
どっちか一方だとどっちかが押し付けたことになるから両方立てればいいだけの話
で、メール欄を書き換えたけど 分裂して両方本家を名乗るからお家騒動になってみんなが混乱する
別スレとしてpart1からスタートする分には勝手にやれば良い ID非表示が嫌ならsageをNG登録すればいいだけじゃないか つうかIDよりももっと大事なことがたくさんあるだろ
白骨化してるテンプレを片付けるとかさ それより全然JSの質問がないじゃないか
そっちのほうが問題だろ 確かにここがイケイケのプログラマが集って
ドヤ解答するためのスレなら問題になるが
実際はここは自ら学びたいというやる気のある人が
気難しく偏屈な仙人たちの知恵を借りに来るための場所だから
基本的に静かなのは問題にならない 不必要なマウンティングと
くだらない言い訳を垂れ流すしかできないゴリラに
「気難しく偏屈な仙人」を自称されても失笑しかできない お前が爆笑しようが失笑しようが知ったこった無いんだが
お前の行動を一々ここで報告しなくていいよ Ext.onReady( ( ) => {
let store = new Ext.data.JsonStore( {
autoLoad : true,
url : 'test.cgi',
root : 'root1',
fields : [ 'hoge' ]
});
let val
// ココ
store.on( 'load', ( store, rec ) => {
let record = rec[ 0 ]
val = record.get( 'hoge' )
console.log( data ) ← ちゃんと値が取れる。
return val
} )
console.log( val ) ← undefind
} )
スコープについて教えてください。
Ext JSを使用しています。
ココのイベント関数から、変数valに値をコピーしたいのですが、
グローバルvalにコピーできません。
どうすればグローバルvalにコピーできるのでしょうか。 スコープの問題じゃないね。
let val
console.log( val ) //=> undefined
val = 'unko'
unkoって表示されません!
これは分かるよね?
let val
setTimeout(() => {
val = 'unko'
}, 1)
console.log( val ) //=> undefined
unkoって表示されません!
これは分かるかな? valに代入するタイミングがvalを表示するタイミングより遅いからです。
オナニーしてから風呂に入るつもりが、
風呂に入ってからオナニーしていた。
なぜチンコが臭いのでしょうか?
と聞いているのと同じ。 分かりたいですが、分かりそうにありませんので出直します。 >>761
いつもドヤってるやつが自称仙人は確かに気持ち悪いな とても初心者的な質問ですいません
Javascriptのソースをjsに変えたいのですが、
(デコードとかエンコードとか言うのですか??)
どうすればよいか教えていただけませんか
以前海外のフリーサイトで
左側にJavascript でボタンを押すとjsに変換してくれる
サイトがあったような。。。
パソコンを再インストールしてうっかりそのサイト情報を消してしまいました
説明べたですいません お願いします 用語がメチャクチャで質問内容が読み取れない。
jsはJavaScriptの略でファイルの拡張子にも使われる。あるいは女子小学生。 >>766
非同期処理だろ
1秒後の処理を、キューに登録しているだけで、実際には実行されていない
登録しただけで、下の処理に進んでいるから、
下の処理の方が、先に実行される >>770
JavaScriptは単なるテキストファイルなので変換する必要なんてない
windowsなら拡張子表示する設定にしてファイル名弄るだけ typescriptかbabelかの話ではないのかな 自覚症状ありありで
突っ込み満載間無質問にもかかわらず
アドバイスありがとうございました
>>771-774
大いに参考になりました
問題も解決しました ありがとうございます java(jsp)の文字列型の配列を、
javaScriptに設定することってできないでしょうか?
文字列は下記みないな感じで渡せました。
<%
String strJsp = "test1";
%>
<scirpt>
<!--
var tinko = <%= strJsp %>;
alert(tinko);
-->
</script>
こんな感じで配列を渡したいです。
代案等でもいいので教えてもらえればと思います。
分かりづらかったらすみません。 java側で配列をjson文字列にシリアライズしてそのjson文字列をjavascriptに渡す
javascript側で受け取ったjson文字列をJSON.parseでデシリアライズすると配列に戻る
はず。
javaでjsonにシリアライズはjavaスレで聞いてねここjavascriptスレなので。
まあgsonかjackson使うんだろうけど。 >>777
多分頭のいい人や経験豊富の人なら
色々なスレで少しずつ聞いたことをあわせられるのですが
私にはできそうにないです。
あまえてるようですみません。 じゃこのjavascript質問スレでjavaの質問に答えられる人が来るのを気長に待つんだね。効率悪い解決方法だと思うけど。
サーバーサイドの言語がなんであれ、クライアントサイドはjavascriptしかないわけだから、その言語でサーバーサイドやってる人はjavascriptの接点に関する知識も持ってるわけ。
対してjavascriptやってる人がサーバーサイド作るときの言語の選択肢は無数にあるわけ。だからこのスレの回答者が必ずjavaの知識も持ってるかというと全然そんなことはないわけ。
だからjavaスレで質問するほうが効率よいので勧めたわけだけど。 >>776
JSPをデバッグしたいなら
素直にeclipseとか使いなよ ご無沙汰しております。計算機を作りたいのですが、
計算機といっても2chのトリップの出現確率を表示する計算機を作りたいのです。
そこで、みなさんのお力をお借りしたいと思いまして質問いたします。
htmlのイメージとしては↓(空欄に数字を記入し、◎を選択する)
検索文字列 大文字小文字の区別 位置の指定 速度
┌─────┐ ┌───┐
│ │ ◎ なし ◎ どこでも │ │trips/s
└─────┘ ◎ あり ◎ 前方 └───┘
◎ 後方
┌──┐
|決定|
└──┘
┌──────┐
結 果| │
└──────┘
↑検索文字列に探したいトリップを入力し、◎を一つ選択、速度にPCの検索速度を入力し、決定を押す
すると、結果にトリップ検索時間(平均値)を出力する計算機を作りたいのです。
ただ、5chトリップのトリップは、A-zの52文字、0-9の10文字、. / と2文字、合わせて64文字しか使えません。
また、トリップは◆ThinThinKYのように10文字で構成され、
しかも10文字目には.26AEIMQYcgkoswの16文字しかでません。
これ以外の時は結果にエラー表示をしたいのです。
みなさんの助言をお願いします。 JSのコードって他人に見られるから難読化ってあるけど
逆に見た人を楽しませるような芸術化ってなんで無いんだろう?
例えばコードの挙動を保ったままAA作ったりできるツールって誰か知らない? >>780
何をしたいのかよくわからない
どの言語でもプログラムの設計ってのは
メインとなる関数のシグニチャと外部仕様を考えることから
>トリップの出現確率を表示する計算機を作りたいのです。
>トリップ検索時間(平均値)を出力する計算機を作りたいのです。
トリップの出現確率を表示するのとトリップ検索時間(平均値)を出力するのはどう関連してるのか?
トリップの出現確率とは?
トリップ検索時間とは?
JavaScriptでどう実現すればいいのかという問題にまで落とし込んでから
このスレで聞いたほうがいいと思うぞ >>786
海外ドラマ「ロズウェル」で出てきた宇宙人役のかわいい女の子テスのこと? >>776
Ruby では、ERB というテンプレートエンジンで、あらゆる種類のテキストに埋め込める
<% 構文 %> で、構文を解釈するが、表示しない。
<%= 式 %> で、式を実行して値を表示する
<% ary = [ "ab", "あ" ] %>
<scr@ipt>
var ary = <%= ary %>;
alert( ary );
</scr@ipt>
Spring Boot のテンプレートエンジンなら、Thymeleaf とかだろ。
プログラム板のJava のスレで聞いてみれば?
スクリプトタグは書き込めないので、<scr@ipt></scr@ipt> の@を削除して いやー
素直にJSP側は配列をJSONで吐くAPI作って
JS側はそれを読みにいった方が良さそうな
まあ何をしたいのかにもよるけど >>789
JSPだつってんだろが糞カスぶっ殺すぞ こんばんは、
質問です。
textareaを使ったエディタを改造して、入力補完をできるようにしています。
ただ、補完された内容をtextareaに挿入すると、妙な位置にキャレットが移動してしまいます。
これを解決するにはどのようにすればいいでしょうか、教えてください。
function puttext(){
text = document.getElementById("area").value;
temp = text.substr(0, 10);
temp += "hoge";
temp += text.substr(10);
document.getElementById("area").value = temp;
}
<textarea id="area" onkeydown="puttext();" rows = "20" cols="100">
mogemoge
</textarea> >>792
selectionを使って
キャレットもコントロールするとよろし
ただしスクロールに癖があるから
その辺のノウハウはおググりください ブラウザー自体をタスクバーを含まないフルサイズサイズで
動的にリサイズしたいのですができません
opener.resizeTo(screen.availWidth+","+screen.availHeight); 674です
>>676〜>>684界隈で相談にのってくれた皆様
今、解決出来ました〜!!!
皆さん、本当にありがとうございました
どの方のアドバイスもすごい参考になりましたが
その中で、解決の決め手になったのは
>>679
例えばimageHasId()ならwindow.location.assign()を使ってる
もし上のコード見てもそれが理解できないなら勉強して出直したほうが良いよって話
という、アドバイスでした
Imagehostのマニュアルを必死に読んでいたときに
これと同じことを指摘してくれた方がいて、その具体的方法を
アドバイスしてくれて、そしたら(とりあえず)Imagehostを取り入れなくても
希望が叶うことになったのです
ロダのインプットタグをスキップするのは無理だということが判り
直接ダウンロードできるURLを解析してリファラーなどを細工し
それから落とすという方法に落ち着きました
皆さん。本当にありがとうございました
(* ̄◎ ̄*)ぶっっちゅうううん♪ ↑
あ、興奮のあまり、割り込んじゃってすみませんでした
もうとっくに話題は変わってるというのに >>794
昔は色々できたんだがな
それ使って悪さする奴続出してできなくなった var jet = new Image();
jet.src="images/jet.png";
var canvas1 = document.getElementById("canvas1");
var ctx1 = canvas1.getContext("2d");
jet.onload = function(){
ctx1.drawImage(jet,0,0,360,270);
imagedata1 = ctx1.getImageData(0,0,360,270);
for (i = 0; i < 388800; i++) {
if (i % 4 == 0) {
imagedata1.data[i] = Math.floor(1.5*imagedata1.data[i]);
if(imagedata1.data[i]>=255){imagedata1.data[i]=255;}
}
if (i % 4 == 1) {
imagedata1.data[i] = Math.floor(0*imagedata1.data[i]);
}
if (i % 4 == 2) {
imagedata1.data[i] = Math.floor(1*imagedata1.data[i]);
}
if (i % 4 == 3) {
imagedata1.data[i] = Math.floor(1*imagedata1.data[i]);
};
};
ctx1.putImageData(imagedata1,50,0,50,50,260,170);
}
canvasですが質問させてください。
愛用している旧operaでは画像フィルタがかかるのですが、
新しいchromeでは画像フィルタがかかりません、何故なんですか? 最初の4行の順番を変えれば?
var canvas1 = document.getElementById("canvas1");
var ctx1 = canvas1.getContext("2d");
var jet = new Image();
jet.src="images/jet.png";
元のコードでは、jet.src に代入した後、
その後の2行よりも先に、jet.onload が呼ばれると、
ctx1 が定義されていないから、まずいのでは?
F12 開発者ツールのコンソールに、エラーが出ていないか?
それと、if よりも、switch を使った方が、可読性が高い
switch ( i % 4 ) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
} こういうことは100%起きない
>> 元のコードでは、jet.src に代入した後、
>> その後の2行よりも先に、jet.onload が呼ばれると、
>> ctx1 が定義されていないから、まずいのでは? そういうことは起きないのか
よく、タイミングのせいで、画像が読み込めたり読み込めなかったりする、アプリがあるので >>798
新しめのブラウザは鯖建てずにローカルでやると同じフォルダに置いてようがcrossorigin扱いになってしまうのでgetImageDataが弾かれる 質問があります。
window.screen.widthを利用してスマホかどうか判断することは可能でしょうか? >>804
ブラウザの幅をどう変えようとも
window.screen.widthは固定値だと思います。 >>806
判定出来る(かも)と書かれてたのと、
https://qiita.com/ryounagaoka/items/045b2808a5ed43f96607
自分のスマホで数値を見ても
screen.width = 360
screen.height = 780
devicePixelRatio = 4
と判定できそうだと思いました。 判断することは可能だよ
その判断が正しいかどうかは知らないけど 今でも普通の人は家では640×480ドットのブラウン管ディスプレイ使ってると思うけど… >>803
スマホ判定というか、PCではない判定は
タッチデバイスかどうかで頑張ってるわ PCでもタッチスクリーンあるじゃん
余計なところまで変な気を回して結局判定間違ってました、とかなるくらいなら大人しくユーザーエージェント見るだけで良さそう 初心者向けの言語にはjavascriptがお勧めとの記事をよく散見する。
でも、アセンブラ・javaの順で勉強してきた俺でもjavascriptにはかなり手こずっている。
全くの初心者にはかなりハードルが高いのではないだろうか?
マークアップ言語も必須だし。 ハードル高いよ
このスレ見ればわかるじゃん
初心者が質問しても罵倒するし
初心者はpythonがいいpythonやってからJSがいい JSはハードル高くないよ
ES3時代ならともかくES6以降はpythonなんかに比べるとずっと初心者向き
Javaがまともに出来るのにJavaScriptで苦戦してるなら学び方が悪いと思ったほうがいいよ
ここで質問してる人たちの大半は言語を学ぼうとしてるわけじゃなく
なんかエラー出たから解決策教えて欲しいっていう人たち JavaScript 第6版、2012、David Flanagan
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017
これが有名な2冊の、サイの表紙のサイ本
Flanagan はRuby の本も書いてるけど、
Google の開発者の机には、必ず置いてあった本
こんなに分厚い本を、Googleの開発者でも、必要とするのが、JavaScript。
あまりに巨大過ぎて、普通人では絶対に読めない
Ruby なんて「たのしいRuby 第6版、2019」1冊読めば、
そこそこプログラミングできる 「たのしいRuby」と並んで話題になる「みんなのPython」もいい本ですか? >>815
何故か質問者をディスらずにいられないのがJSマン
pythonスレなら普通に教えてくれる みんなのPython 第4版、2017
は、昔の方が文法が多くて、良かった。
今のは、Jupyter Notebook, Anaconda の説明が増えて、プログラミングするには厳しい
パーフェクト Python [改訂2版] (PERFECT SERIES 5)、2020/6/1
パーフェクト Ruby on Rails 【増補改訂版】 (Perfect series)、2020/7/25
パーフェクトシリーズが、新しくなったので、
多言語をやってる人には、お勧め Ruby on Rails では、サーバー側がRubyで、
クライアント側が、React + Bootstrap も多いけど、
サーバー側をJavaScript(JS), Node.js にすれば、
言語が1つになるので、開発が楽になると主張する人もいるけど、
あまりに、JSは巨大だから、かえって難しくなる
だから、Rails では、Node.js, Webpack, Babel をコンパイルツールとして使っているだけ >>813
追記
初心者がいきなりマークアップ言語・DOM・プロトタイプチェーンを理解するのは
厳しいと思う。 >>821
そう?
クソバカだった学生時代の俺でもなんとかなったんだから
賢い今の子ならサクッと覚えられそうな気もするんだけどなあ >>814
このスレは初心者用じゃないから
元々こことは別に、初心者スレと、更に手取り足取りスレがあった
ここは初心者お断りのスレ 今の子供はコード書かないでプログラミングしちゃうんでしょ
文字打ってんのwwwとか馬鹿にされる時代が来るよ >>823
初心者お断りのスレなんて何処に書いてるんだよw
自称仙人のマウンティング野郎かww >>822
知的障害と境界知能は合わせて16%もいる。
世の中には割り算・因数分解すら理解出来ないひとは多い。
そう考えるとjavascriptは難しい部類に入ると思う。
オブジェクト・インタフェースの継承なんかもややこしい。
似たような用語が言語の概念を不要に難解なものにしてる感がある。 >>826
そんなに多いのかよ
だからアヘの支持率が未だに35%あるんだな >>826
へーきへーき
俺なんて九九を覚えられなかったレベルだから
それでも国立工学部に入れたし
JSも書けた
要はやりようよ >>825
仙人云々は意味が分からんが道場規則は元々テンプレにあった
自分は別に今は初心者が来るなとは言わないけど
シリーズとして長く続いるのだからその空気と精神は残っている
そう思っている住人やそういう考えはちゃんと理解して尊重すべきということ JSは継承の言語じゃない
オブジェクトと移譲
この2つを抑えればJSの多くを理解できる
クラスだのインターフェイスだの
余計なこと考えると途端に難しくなる >>829
九九だってちゃんとやり方教わってやればできるようになるんでしょ
一定期間内にみんなと同じように自然にできるようにならなかっただけで >>821
JavaScriptの場合はプロトタイプチェーンを初期にきちんと理解してなくてもそこまで困らないよ
実際、理解せずに仕事で使ってるやつたくさんいる
ただどの言語でも遅かれ早かれプロトタイプチェーンやスコープチェーンに相当するものは学ぶ必要はあるけどね
初心者向きかどうかって絶対的なものじゃなく相対的なものだから
他にいい選択肢がなければ消去法で比較的初心者向きってことになる
Python+tkinterとかで学ぼうとしてるやつとかを見るとJS+HTML/CSSはかなり初心者向きだと思う 足算というか
たとえば7×8だったら
脳内でこういう絵が思い浮かぶ
○○○○○●●
○○○○○●●
○○○○○●●
○○○○○●●
○○○○○●●
●●●●●○○
●●●●●○○
●●●●●○○ >>835
そのあとどうやって7x8を計算しているんだ? >>833
返信ありがとうございます。
プロトタイプは後から学んでも良かったのですか。
私の場合は変に完璧主義な所があって、まず知識を目一杯頭に詰め込んで
資格試験に合格してからコードを書いて動かすという勉強方法をしています。
ちなみに今はHTML5プロフェッショナル認定試験レベル2の勉強中ですwwwww >>837
本当ならプロトタイプを先に学んだ方が絶対に簡単だし良い
問題は入門者向けにプロトタイプベースで解説してくれるサイトや本が皆無なこと
だから良い悪いではなく後から学ぶしかなく選択肢はない プロトタイプベース自体は簡単でしょ
一般論として用意されている仕組みをどう使うかっていうのは
長年かけて積み重ねる経験とも言えることでもあるしもちろん難しいけど、
プロトタイプベース自体はオブジェクトの素朴なイメージが
持てていさえすれば1日で理解できるでしょ
JSが関数を使ってどう旧クラスシステムを構築していて
new演算子がどういう振る舞いをするのかというようなことを細かく学ぶのは
確かに初心者には相当荷が重いよ
でもそういうことを一切抜きでObject.createか__proto__の振る舞いだけを
理解するのでもプロトタイプベースを理解したと言っていいと思うけどな
あくまでプロトタイプベース自体は素朴なもので、
それを隠蔽してやりくりするためのJSの旧クラスシステムが複雑なだけだからね 2つの数字から1つの結果を出す足し算ができるのなら
2つの数字から1つの結果を出す掛け算ができない理由はない
それは単に覚えられないと信じ込んだせいで
本当に覚えられなくする回路が頭にできてしまっているだけ
でもそれは汎用的な回路ではない
左右盲の人がLRは分かることがあるように違う覚え方をすればいいだけ
「違うこと」というのは無数にあり得るので必ず覚えられるパターンが見つかる
そういうことをここまで誰にも教えられないで育ってきたとか可愛そうだな Object のプロトタイプ
https://developer.mozilla.org/ja/docs/Learn/JavaScript/Objects/Object_prototypes
簡単に言えば、1つ上(親)の階層に、定義すること
それによって、継承した場合に使えるようになる。
名前の探索チェーンに入ってくる。
子で見つからなければ、親で探す >>841
たぶんそうなんだよな
覚え方に自然に気づけなくて、他人に教わることも自分で考えることもなかったってだけで、やればどうにかなるんだと思うけど本人じゃないから何とも
まわりも馬鹿だからどうやったらできるか考えてあげられる人がいなかったんだろうね 2つの数字から1つの結果を出す足し算ができるのなら
2つの数字から1つの結果を出す掛け算ができない理由はない
ただし足し算を理解してから掛け算を理解するまでは1年かかった
理解できない理由はないが、理解するのに学習と時間は必要であるということ
って、あたりまえやーーーー! どんどん分解していくとアセンブラになるし原子になる
それはわかりやすくなるということではない。むしろ逆
構成要素をそのまま使うのはわかりづらく
組み合わせて具体的なものを作ることで
より便利になるんだよ >>841
よくわかんないんだけど
九九を覚えた人は
掛け算する時に足算はしてないんでしょ?
その結果を暗記して
照らし合わせているだけで >>848
こんなのがあるのか…
九九覚えなかっただけで
算数は得意だったんだけどなあ ■ このスレッドは過去ログ倉庫に格納されています