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

レス数が1000を超えています。これ以上書き込みはできません。
0001Name_Not_Found2019/09/16(月) 17:22:37.92ID:???
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/

0952Name_Not_Found2019/12/26(木) 23:55:07.87ID:???
初心者すぎてすいません
getElementById
ってどういう意味ですか?
Idをつけた箇所に来たら何かを稼働させるって事ですか?

0953Name_Not_Found2019/12/27(金) 00:10:53.62ID:???
>>952
引数で指定されたIDを持つHTML要素のオブジェクトを返す

0954Name_Not_Found2019/12/27(金) 07:23:20.20ID:???
>>952
たとえばキミがElementだとしてIdがtaroだったとする
で、おれがgetElementById('taro')するとキミ(taro)を取得し
キミの服装を変えたり、しゃべらせたり、歩かせたり、髪型を変えたりできる
例)
var taro=getElementById('taro'); //取得
taro.style.color='blue'; //taroElement内の文字の色を変える

0955Name_Not_Found2019/12/27(金) 09:00:30.12ID:???
多次元配列をディープコピーしたいのですが
var arr=[['a','b'],['c','d']];
var arr2=JSON.parse( JSON.stringify(arr) );
arr2[1][0]='e';
console.log(arr,arr2);
これ以外だと配列ループするしかないですか?

0956Name_Not_Found2019/12/27(金) 09:54:17.16ID:???
>>955
ループとは?
何を使おうが、配列の要素を走査する処理は走る

0957Name_Not_Found2019/12/27(金) 13:46:19.56ID:???
>>956
配列は広義の意味ではなく上の例だとarrのループです
Arrayのみならこんな感じでしょうか?↓
var deepCopy=function(obj){
var arr=[];
if(Object.prototype.toString.call(obj)==="[object Array]"){
obj=obj.concat();
for (var i=0;i<obj.length;i++){
arr.push(deepCopy(obj[i]));
}
}else{
return obj;
}
return arr;
}
var arr=[["a","b"],["c","d"]];
var arr2=deepCopy(arr);
arr2[1][0]="e";
console.table(arr);
console.table(arr2);
Arrayだけじゃないともっと複雑になりそうな気がしますが
JSON.parse( JSON.stringify(arr) );以外になにか方法ないのかなと思いました

0958Name_Not_Found2019/12/27(金) 18:23:26.91ID:???
再帰

0959Name_Not_Found2019/12/27(金) 20:11:41.00ID:???
function deepCopy ( obj ) {
return new Promise( done => {
let mc = new MessageChannel
mc.port2.onmessage = e => done( e.data )
mc.port1.postMessage( obj )
} )
}

let ary1 = [ [ 'a', 'b' ], [ 'c', 'd' ] ]
let ary2 = await deepCopy( ary1 )

0960Name_Not_Found2019/12/27(金) 20:39:16.22ID:???
jQuery のdeepcopy。
var newObj = $.extend(true,{},sourceObj)

javascriptでlodashを使ってディープコピーを簡単に行う
https://qiita.com/t-motoki/items/5685d302e2e242f561b4

0961秀丸使いのtaro2019/12/27(金) 20:56:51.70ID:???
>>954
す、す、すげええ
わ、わ、わかりやすい
感謝っす
javascript頑張ります!!

0962Name_Not_Found2019/12/27(金) 21:47:31.29ID:???
>>957
>>955の「配列ループ」の説明になっていないようだが?

二次元配列にdeepcopyなど不要
var array1 = [["a","b"],["c","d"]];
var array2 = array1.slice().map(array => array.slice());
console.log(JSON.stringify(array1) === JSON.stringify(array2));

まあ、deepcopyが必要となる状況がそもそもないようにコードを組むがね
DOMのcloneNodeのように、新しい概念上で必要な場合もあるが、それも新しくclassを作って複製可能なように作っておく

0963Name_Not_Found2019/12/27(金) 22:44:10.72ID:???
本当に全プロパティを複製する必要があるのか?
Proxyを作って更新があったものだけキャッシュしとく方が効率的なこともあるだろう

0964Name_Not_Found2019/12/27(金) 23:56:52.55ID:???
こんにちはをこんばんはに変更する場合、パターン1とパターン2のどっちがナウいですか?
原宿とかのスタバでコーディングしてて、エンジニアにチラ見されて恥ずかしくないのはどっちですか?

【パティーン1】
index.html
<p>こんにちわ</p>
script.js
$('p').text('こんばんは');


【パティーン2】
index.html
<p>こんにちは</p>

script.js

$('p').html('<span>こんばんは</span>');

0965Name_Not_Found2019/12/28(土) 00:22:24.26ID:???
ナウくしたいならVueとか使えば

09669642019/12/28(土) 00:38:20.32ID:???
>>965
ナウ過ぎるのも嫌なんだよ
>>964でパティーン1と2でどっちがいいの?

0967Name_Not_Found2019/12/28(土) 05:10:46.87ID:???
スタバでindex.htmlとscript.js睨みながら$("p")とかやってんのがいるの想像するだけで笑ってしまった

0968Name_Not_Found2019/12/28(土) 05:53:56.36ID:???
>>958,959
ありがとうございます
awaitとか調べてみたいと思います

>>962
再帰と考えてくれればいいと思います(単にコードを書くつもりでarrをループする具体的な部分を示したので)。
二次元配列というか多次元配列(>>955)です(例は2次元配列ですが)
こちらの管轄に無い配列をコピーしたいときとかですね
理想は配列以外のオブジェクトも含むケースですがまずは配列のみからやってみるという感じです

0969Name_Not_Found2019/12/28(土) 07:27:59.12ID:???
>>966
どっちもダサい

0970Name_Not_Found2019/12/28(土) 08:00:03.47ID:???
>>964
1だろ。2はそもそもspanが間に入ってるので意味が変わってしまってる

0971Name_Not_Found2019/12/28(土) 08:20:35.64ID:???
説明してあげると、どちらもダサいって言ってる人は、タグpを使ってるからだよ。
pは普通たくさんあって他の用途でも使われるのでp全部をこんばんはに
したいことはまず無いだろうなという前提に経てば、そういうことはしない。

idを使うと言い出すやつがいるかも知れないが、一番いいのはclassを使うこと。
そうすれば変換したいこんにちはが一つでも複数でもコードは変換しなくて良くなる。

<p class="greeting">こんにちわ</p>
$('.greeting').text('こんばんは');

つまりこういうのだな。もっといいやり方は。


だがそもそもJavaScriptで文字を変えるべきことなのか?という話がある

<body data-timeframe="daytime">
<p class="daytime greeting">こんにちわ</p>
<p class="night greeting">こんばんは</p>
</body>

.greeting { display:none }
[data-timeframe="daytime"] .daytime.greeting { display:block }
[data-timeframe="night"] .night.greeting { display:block }

例えばこういうCSSとHTMLを書いておけば、data-timeframeを
daytimeにするかnightにするかで、こんにちわやこんばんはが自動的に変わる
応用で色んな部分を変えることができる。

jQueryでやるのは、このようにclassとか今回はdata-*属性を変えるだけにするもんだよ。
JavaScriptでHTMLや文字列を切り替えるのはバッドパターン

0972秀丸つかいのtaro2019/12/28(土) 13:24:12.01ID:???
>>971
て、て、テクニシャンかよ
何年でそこまでのレベルに到達したの?
ちょっと憧れてしまったお

0973Name_Not_Found2019/12/28(土) 13:59:30.01ID:???
上の部分は、1行目のhoverでポインタが,languageの上に乗った時に、fadeInするって意味だと思うんだけど
下の部分は、ポインタが外れた時っていう意味の単語みたいなの無いけど、なんでポインタが外れたらfadeOutするの?
なんでですか?


$('#language-wrapper').hover(
function() {
$('.language-text').fadeIn();
},



function() {
$('.language-text').fadeOut();
}
);

0974Name_Not_Found2019/12/28(土) 14:10:51.79ID:???
よく見ろ下も単体じゃなくて上と一緒にhoverメソッドに渡してあるでしょ
https://api.jquery.com/hover/
hoverの第1引数がホバーした時、第2引数が外れた時に実行される関数

0975Name_Not_Found2019/12/28(土) 15:59:23.13ID:WMd/dG8p
>>974
ホバーした時と、外した時で、ワンセットて事だね
そのサイトクリックしたら英語でびびったよ
まあ翻訳ソフト入れたけどね

0976Name_Not_Found2019/12/28(土) 16:00:54.73ID:???
それにしてもあんたら天才だな

0977Name_Not_Found2019/12/28(土) 17:48:20.83ID:???
クオンテーションやダブルクオンテーションを付けたり、付けなかったり
カンマが必要だったり、セミコロンが必要だったり・・・・
こういうのって初心者としてはツライんですが、ずっとやってれば覚えられるものですか?

質問レベル低すぎてすいません

0978Name_Not_Found2019/12/28(土) 18:19:22.66ID:???
覚えるし、大した話じゃないし
vscode+javascriptの適当なプラグインで
勝手にチェックしてくれるのでどうでもいい

0979Name_Not_Found2019/12/28(土) 18:59:28.29ID:???
半年もやってたら覚えるよ

0980Name_Not_Found2019/12/28(土) 19:04:56.90ID:???
>>977
覚えるものではない
言語なのだから
一々ここではこの構文を使って、とか考えてる内は初心者

0981Name_Not_Found2019/12/28(土) 19:31:54.56ID:???
出たエラーを見ればいい >>977
文字通りトライ&エラーでバカでも自然に覚える

0982Name_Not_Found2019/12/28(土) 19:33:41.06ID:???
>>971
こんちわって気分のときとちーっすって気分のときもある場合どうしたらいいのですか

0983秀丸使いのtaro2019/12/28(土) 20:49:29.38ID:???
>>978
VScodeですね
秀丸を捨てる時が来たようです
アドバイスありがとうございます!!

0984Name_Not_Found2019/12/30(月) 10:53:44.39ID:???
アロー関数の、=> この記号ってキーボードのどこをどうやって入力するんですか?
ググっても出てこないという悲劇

0985Name_Not_Found2019/12/30(月) 11:00:55.21ID:24lzJ5h+
>>984
矢印で変換するのとは違うからな

0986Name_Not_Found2019/12/30(月) 11:32:54.78ID:???
>>984
AAだよ

0987Name_Not_Found2019/12/30(月) 12:25:06.25ID:???
2019年もjQueryのシェアは微増で終わりましたね(苦笑)
だから言ったんだよ。誰もがウェブアプリ作ろうと思ってたりしないんだから
普通のウェブサイトならjQueryでいいんだって
適切じゃない技術に乗り換える意味がない

0988Name_Not_Found2019/12/30(月) 13:02:46.75ID:???
>>984
なぜそれが1文字の記号だと思うのか

0989Name_Not_Found2019/12/30(月) 13:06:54.49ID:???
一文字にくっついているからやろ
リガチャって知っとるか?

0990Name_Not_Found2019/12/30(月) 14:15:50.65ID:???
javascript勉強しだして2週間だけどまだ半分もいってないんだが
独学でjavascriptの勉強をして、未経験からIT企業に就職するまでに、何時間くらいの勉強時間が掛かると思いますか?

500時間くらいですか?

0991Name_Not_Found2019/12/30(月) 14:18:16.88ID:UDiN/Fsc
入りたい企業のレベルと自分のスペック晒せよw

0992Name_Not_Found2019/12/30(月) 18:12:47.39ID:???
>>991
Fランクの糞みたいな大学卒(偏差値54)
30代前半で現在の職業は賃貸不動産の案内というカス仕事
タイピングまあまあ速い、付き合った女性の数は40人強、体形はスリム

入りたい企業、聞いた事ないような3流企業でもブラックじゃなければOK
最初は派遣でもOK!これってどう?

0993Name_Not_Found2019/12/30(月) 18:36:06.21ID:???
>>984そのまま、=>(半角英数でイコール、不等号(大なり))と続けて2文字打つのがその書き方だよ、それで合ってるよ
そんな些細なことをちょっと聞けるような勉強仲間もいない中で独学しようと立ち上がった君に温かい拍手を送りたいぞ

0994Name_Not_Found2019/12/30(月) 18:38:25.95ID:???
こんな情弱がプログラミング始めることもあるんだな。

0995Name_Not_Found2019/12/30(月) 18:46:45.26ID:???
>>992
たとえば未経験者歓迎で教えてくれる企業に入って、経験を積んでから転職していく道もあるので
大事なのは何時間やったかではなくて、何時間かやって自分に向いてると思うかどうかだね。

本当に楽しくて仕方がないのなら、会社に入るとむしろ苦痛になるのでいきなりフリーランスっていうのも、最近なら十分考えられるし。

0996Name_Not_Found2019/12/30(月) 18:50:58.57ID:???
でも30代か
色んな経営者とか、業界で有名な人と話したり、言ってるのを聞いた感じだと0から始めるのは30が限界って考えてる人が多そう。
ならクラウドワークスとかで副業として始めて、行けると思ったタイミングで切り替えるのがいいかもね。

0997Name_Not_Found2019/12/30(月) 19:06:29.17ID:???
30代とか関係あるかな?35歳で入ってきて出世していく人もいれば
大学卒業してすぐ入ってきてもメンヘラになって全く何も出来ないようなの普通に居るぞ
言語が新しいバージョンになったら対応できないんだよそういう人は

0998Name_Not_Found2019/12/30(月) 19:23:01.96ID:???
>>995
いきなりステーキみたいで楽しそうですね
いきなりフリーランスやってみようと思います
スクールにも通うつもりです

0999Name_Not_Found2019/12/30(月) 19:49:09.65ID:???
>>994
こういうのもたぶん初心者

1000Name_Not_Found2019/12/30(月) 19:55:30.72ID:???
うむ。俺は始めてから6年くらいの初心者だ。

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 105日 2時間 32分 54秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。