+ JavaScript の質問用スレッド vol.124 +at TECH
+ JavaScript の質問用スレッド vol.124 + - 暇つぶし2ch2:デフォルトの名無しさん
21/11/10 15:26:36.49 jxD2VXPG0.net
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 URLリンク(jsdo.it) URLリンク(jsbin.com) URLリンク(jsfiddle.net) URLリンク(ideone.com)
■過去スレ全集
URLリンク(www2.atpages.jp)
URLリンク(usamimi.info) (閲覧のみ)
■テンプレ案
URLリンク(fiddle.jshell.net)

3:デフォルトの名無しさん
21/11/10 15:46:52.81 qwlO4mThM.net
前スレ998の質問だけど
一般的にはc2が返してるような関数のことをクロージャと呼ぶことが多いが
JavaScriptの関数は全部クロージャなのでc2自体もクロージャ

4:デフォルトの名無しさん
21/11/10 16:02:48.18 ABhSQgxq0.net
なるほど

5:デフォルトの名無しさん
21/11/10 17:50:22.23 KxrU4/8D0.net
>>998
追記です
3つの要素を持つオブジェクトセットを利用して、
関数内のクローズ状態を実現する、ということ意味して
そのセットをクロージャーと呼んでいるのだという理解でいかがでしょう?

6:デフォルトの名無しさん
21/11/10 18:59:16.59 l7XWnHd40.net
過去スレみれねー

7:デフォルトの名無しさん
21/11/11 11:19:40.42 FWyFKZol0.net
前スレで誤字があったので訂正と
クロージャーに関してわかりやすく説明しときます
closerは誤りでclouserでした

8:デフォルトの名無しさん
21/11/11 11:24:24.80 vTNkP19HM.net
末尾セミコロンはどうしたらいいですか?

9:デフォルトの名無しさん
21/11/11 11:47:50.28 FWyFKZol0.net
【クロージャー】
クロージャーはJSの関数に下記の仕組みを持たせるための要素のセットです
・関数内部をクローズにする(外部から直接アクセスできない)
・関数からは外部のプロパティにアクセスできる
この仕組みを作るものがクロージャーです
クロージャーの要素は、おおざっぱに関数自身、関数内情報、関数外部を参照するポインタで、
この要素のセットをクロージャーと呼びます

【外部ポインタの働きと内部情報の動きの確認】
<サンプルコード>
function f1(){ let c=0;return c++; }
function f2(){ let c=0;return ()=>{let s=0;return [c++,s++];} }
let f3=f2() ;
1 f1() ;f1() ;console.log(f1());
2 f2()();f2()();console.log(f2()());
3 f3() ;f3() ;console.log(f3());
<結果出力>
1 c:0
2 c:0 s:0
3 c:2 s:0
ここで外部への参照ポインタをouterとします
f1のクロージャーは、{関数f1 return c}{変数c}{outer(global}
f2のクロージャーは、{関数f2 return function}{変数c}{outer(global}
f2のアローの場合、 {無名  return [c,s]}{変数s}{outer(f2)}

10:デフォルトの名無しさん
21/11/11 11:48:17.36 FWyFKZol0.net
コード1では、f1を2回呼びますが、関数呼び出し1回につき、1つの(別々の)クロージャーが生成されます
同じ変数名のcであっても、別物のcとなります
ですから、cはインクリメントされずに0となります
コード2ではf2から戻されるアロー関数を複数回呼び出しますが
関数の呼び出し1回につき、別々のクロージャーが生成されますので
上記と同じようにcは0になります
コード3では、f2から戻されるアロー関数を変数f3に代入し、それを複数回呼び出します
呼び出しのたびに別々のクロージャーが生成されますが
外部への参照は、outer(f2)なので、同じcを参照していますので
複数回呼び出すとcをインクリメントします
一方でアロー関数内の変数sは、コード1や2の説明と同じでインクリメントされません

11:デフォルトの名無しさん
21/11/11 11:48:37.71 FWyFKZol0.net
【関数はクロージャーか?】
クロージャーは関数ではありませんし
関数はクロージャーではありません
関数内をクローズにし、外部参照を持たせる、という仕組みをつくるための
関数、内部情報、外部参照ポインタのセットがクロージャーです
【言語は多数者が正しい】
f2で戻される無名関数をクロージャーと呼ぶ人がいるのは
クロージャーの説明のために多用されていることで
無名関数をクロージャーと誤解してしまったり
f1が外部からクローズ状態なので、f1がクロージャーなんだと
そう理解してる人が多かったりしています
クロージャーという言語の用法に関して
何が正しいのかは、それぞれの立場を主張する人数によって
決定することが正しいのかもしれません
以上で訂正とまとめを終わります

12:デフォルトの名無しさん
21/11/11 12:08:29.83 FWyFKZol0.net
>>8
javascript.infoでは
[ ]の前にセミコロンは想定していないため、前段と次段のコードが連続することが説明されてます
console.log(1)
[...'string'].forEach(console.log)

console.log(1)[...'string'].forEach(console.log)
と同じ扱いで、1を出力したのち、エラーになります
[]を使うときに思い出してください

13:デフォルトの名無しさん
21/11/11 13:44:12.02 PJUcZthZ0.net
>>7
closureでは?

14:デフォルトの名無しさん
21/11/11 14:51:22.63 69bvz9620.net
スジャータ

15:デフォルトの名無しさん
21/11/11 16:11:30.72 +2WcRgNnM.net
クロージャーに「関数内部をクローズにする」なんて意味はないよ

16:デフォルトの名無しさん
21/11/11 16:24:36.04 YbaQuGpg0.net
JSのクロージャーってどういう意味なの?

17:デフォルトの名無しさん
21/11/11 16:26:10.03 YbaQuGpg0.net
9の長い長い説明はまったくもって的外れ?

18:デフォルトの名無しさん
21/11/11 18:44:36.77 a2zl13Hx0.net
ふーん、なるほどねぇ

19:デフォルトの名無しさん
21/11/11 19:03:41.76 a2zl13Hx0.net
||クロージャーは、組み合わされた(囲まれた)関数と、
||その周囲の状態(レキシカル環境)への参照の組み合わせです。
||言い換えれば、クロージャは内側の関数から外側の関数スコープへのアクセスを提供します。
||(MDN)
「関数の内から関数の外を参照できる、参照権限(参照できる状態(仕組み))」ということだろ!!!
これできめ!

20:デフォルトの名無しさん
21/11/11 19:41:41.77 CFwD9UgS0.net
クロージャは関数閉包のこと
関数の中に関数が内包された状態を指す
外側の関数をエンクロージャと呼ぶが、クロージャ=関数ではない

21:デフォルトの名無しさん
21/11/11 20:24:37.12 eeb4OqXn0.net
現在のスコープに変数が見つからなければ、どんどん外のスコープに変数を探しに行って
最終的にwindowまで探しに行ってくれる機能のことをクロージャと呼ぶ
かな?

22:デフォルトの名無しさん
21/11/11 20:29:10.77 CFwD9UgS0.net
>>21
違う
それはスコープチェーン

23:デフォルトの名無しさん
21/11/11 21:31:01.83 P2a3zHOn0.net
Promiseの状態(pending/fullfilled/rejected)って外から取得できないんだっけ?
探しても方法が見つからな。

24:デフォルトの名無しさん
21/11/11 22:17:06.64 9vb0JKHxM.net
MDNの訳が微妙すぎると思ったら原文も同じだった
A closure is the combination of a function with references to its surrounding state.

A closure is a function bundled together with references to its surrounding state.
のどっちかにしたかったんだろう

25:デフォルトの名無しさん
21/11/11 22:18:41.74 a2zl13Hx0.net
>>20
それは違う言語でしょ
JSはグローバルも一つの環境としてるから
グローバル内に宣言された関数も、囲まれた関数なんだよ
グローバルを関数と呼ぶのなら、それはそれかもなんだけど

26:デフォルトの名無しさん
21/11/11 22:22:39.31 a2zl13Hx0.net
>>24
JSの設計のあいまいさを感じられるな

27:デフォルトの名無しさん
21/11/11 22:44:02.25 /xlmv84EM.net
囲まれた関数ってのは微妙な原文と訳文で作られた言葉
ここの真ん中くらいにあるクロージャの定義を読むといい
URLリンク(javascript.info)

28:デフォルトの名無しさん
21/11/12 07:15:12.60 JgN/83EX0.net
それを読んでも統一見解が得られづらいからこうなってるってわかる?

29:デフォルトの名無しさん
21/11/12 07:25:05.37 JgN/83EX0.net
でもまぁ一連のやり取りで
環境レコードや外部参照チェーンやスコープの復習ができたということで
この部分に関しては、脱素人になったわけだ、おめでとー

30:デフォルトの名無しさん
21/11/14 19:04:13.43 y8V9oC250.net
canvasでcontext.lineWidth=1;にして直線を描いても幅が1にならなくて2ピクセル分の太さになってしまいます
どうすれば幅1の直線が描けますか?

31:デフォルトの名無しさん
21/11/14 19:57:25.52 oSBO5A5Z0.net
>>25
言語仕様に言及するのなら、「ECMAScriptにクロージャは存在しない」が正解
> グローバル内に宣言された関数も、囲まれた関数なんだよ
そんな仕様はない
クロージャなんて概念は忘れて、変数、スコープ、関数の仕組みを覚える方が正しい理解に繋がる

32:デフォルトの名無しさん
21/11/14 20:00:15.95 g8AzdeEc0.net
>>30
整数座標はピクセル中央ではなくピクセル左上になるので0.5足す
めんどくさかったらcontext.translate(.5, .5)するとか

33:デフォルトの名無しさん
21/11/14 20:54:05.86 oSBO5A5Z0.net
>>28
クロージャで統一見解といえるのは「クロージャ=関数が入れ子になった状態」だけ
そこに機能的価値を見いだそうとするなら「クロージャという名の機能は存在しない」だ
機能的には別の機能で実装されていて、
関数を入れ子にした結果、それらの機能が便利な状況を作り出しているに過ぎない
学習目的なら「クロージャ」は忘れた方がいい

34:デフォルトの名無しさん
21/11/14 21:16:07.13 Ec4oDlx8M.net
関数が入れ子かどうかなんて関係ないよ
理解してない人たち同士で"統一見解"を求めようとするからドツボに嵌ってる

35:デフォルトの名無しさん
21/11/14 21:27:55.45 oSBO5A5Z0.net
>>34
仕様にない単語に、統一見解を求めるのが間違いなんだろうな

36:デフォルトの名無しさん
21/11/14 21:47:51.05 ybz8bu8o0.net
とはいえ「クロージャ=関数が入れ子になった状態」って定義は明らかに間違いだろう。

37:デフォルトの名無しさん
21/11/14 21:57:27.13 pXm3Ey2jM.net
ECMAの仕様にはAbstruct Closure Specification Typeが定義されてるし、関数定義周りでclosureって言葉は繰り返し出てくるよ
まあでも仕様型みたいな大半の人が知らなくても困らないような詳細知識よりも
クロージャとは一般的にどういうものを指すのかという基礎的知識を身につけたほうがいい

38:デフォルトの名無しさん
21/11/14 23:10:09.15 oSBO5A5Z0.net
>>37
一般解を示す公式文書を出せる?
ぶっちゃけ、言語が異なれば用語定義も変わると思ってるし、共通の用語なんてないと思ってる
複数言語習得者が勝手に共通認識を定義しているだけなのでは?

39:デフォルトの名無しさん
21/11/15 00:30:22.12 gtEjBgCa0.net
ワロスw

40:デフォルトの名無しさん
21/11/15 07:13:10.30 slHpwqED0.net
JSのクロージャーは
関数内のプロパティに、外部から直接アクセスできないが
関数内から外部への参照はチェーンしているという状態をいう
外部Lexicalへの参照を持たない関数型は
関数ではあるけどクロージャーにならない
入り子になっていても
もうクロージャはこれで終わり
クロージャーに貴重な人生を奪われるなよ?

41:40
21/11/15 07:21:28.04 slHpwqED0.net
状態ではなく仕組みがいいな
クロージャーはオブジェクトセットという表現が適してる例が散見されるみたいだし
必要なオブジェクトセットを使ってnativeでクロージャーを実現してるんだから
クロージャーは仕組み!これできめ!

42:デフォルトの名無しさん
21/11/15 07:45:40.57 slHpwqED0.net
>>37
var a=0;
let b=1;
let c='C';
function func(){
let c=2;
return [a,b,c];
}
func.a='A';
console.log(
[window.a,window.b,window.c],
[a,b,c],
func(),
[func().a,func().b,func().c],
[func.a,func.b,func.c]
);

この出力を理解するにはクロージャーの仕組みの理解は必要でない?

43:デフォルトの名無しさん
21/11/15 19:30:23.51 rDFc2Y3T0.net
>>40-41
あなたの見解は理解した
正しさの根拠が見つからないのでそれだけだが

44:デフォルトの名無しさん
21/11/15 21:15:21.66 eCFTqC9o0.net
すいません、下記のようにボタンを押した時の処理をあらかじめ一つずつJSで書いて書いてるんですが、
ボタンの種類と数が莫大な量になるとJSを書くのが大変になってきました
逆にクリックされた任意のボタンオブジェクトを変数に入れる方法ってあったりしますでしょうか
(ボタンがクリックされる→クリックされたボタンのclassやvalueやtextを調べて目的の処理、という順番に変更したい)
下記が現状のコードです

・html
<button class="BtnA" value="固有の番号">ボタンAタイプ</button>
<button class="BtnA" value="固有の番号">ボタンAタイプ</button>
<button class="BtnB" value="固有の番号">ボタンBタイプ</button>
・js
const BtnA = document.getElementsByClassName('BtnA');
for(i=0;BtnA.length>i;i++){
BtnA[i].addEventListener('click', () =>{
//ここに押された時の処理を書く
});
}
const BtnB = document.getElementsByClassName('BtnB');
以下BtnAのコードとほぼ同様

45:デフォルトの名無しさん
21/11/15 22:27:30.97 slHpwqED0.net
>>44
クラス数×value数×text種類数だけ処理数があるってことですか?

46:デフォルトの名無しさん
21/11/15 22:58:29.48 OfX77+Sf0.net
class="BtnA BtnAll"
class="BtnB BtnAll"
みたいに、BtnAll で、すべてのボタンの処理をまとめ�


47:黷ホ? JavaScript のスレは、この板ではなく、web制作管理板の方へ書き込んでください! この板のスレは、荒らしが出た時に、緊急的に立てられたものだから



48:デフォルトの名無しさん
21/11/16 00:43:22.12 Ca8LCMpZ0.net
>>45
そのイメージに近いです
>>46
ある程度まとめた結果が
BtnA BtnB BtnCみたいなグループです。
了解です、Web製作管理板に移動させていただきます。

49:デフォルトの名無しさん
21/11/16 07:19:53.13 L8BSEbG10.net
>>44
event.currentTarget
event.target

50:デフォルトの名無しさん
21/11/16 13:14:21.44 x6nbCzKN0.net
>>44
処理数が多すぎて管理効率が悪くなってるってことかな?
ボタン数×(value数-1)×(str数-2)の数の処理があって
保守管理しづらいというのなら下記の考え方はどうでしょう?
変数buttonにはボタンオブジェクト
変数getFuncにはクリックイベント処理を固有番号で紐づける
変数buttonをfor of で回して、固有番号で分岐して、リスナーを設定する
button=document.getelementsbytagname('button')
getFunc={
固有番号:function(){}
固有番号:function(){},,,}
for(let i of button){
switch(i.value){
case '固有番号':i.addEventlistener('click',getFunc[固有番号]);break;

51:デフォルトの名無しさん
21/11/16 13:26:34.28 x6nbCzKN0.net
>>44
上の説明だとわかりづらいかな
let getButton=function(){button=document.getElementsByTagName('button');}
// valueの固有番号毎に処理を設定
let addEvent=function(){
for(let i of button){
switch (i.value){
case '101':i.addEventListener('click',addFunc[101]);break;}}}
let button;
// 関数をまとめ置く
let addFunc={
101:function(){console.log(this.value)},
102:function(){console.log(this.className)},}

52:デフォルトの名無しさん
21/11/16 19:57:25.19 ES2RXggH0.net
switchの中をObject.keys().forEach()でまわして
addFunc[+i.value]で作り直したらすっきりしそう
いじりたくなるコードだけど可読性を考えたらこれはこれなのか

53:デフォルトの名無しさん
21/11/16 22:10:30.79 iK58PKMQ0.net
リアクトでのスマホアプリ開発なんですが、エミュレータは何がお勧めですか?
というのも実機を持っていません。
また、実機を使う場合はアンドロイド5などは使い物になりますか?
古い機種に合わせて作っても、上位互換性のないソフトになるんでしょうか?

54:デフォルトの名無しさん
21/11/17 07:47:58.17 /ZY56h0o0.net
>>52
「React andoridアプリ開発 エミュレータ」で検索どうぞ
「api16 開発 不具合 or 互換性」で検索どうぞ
これがベストっていう答えがないから
開発者が自分で試行錯誤して答えを出す問題かな
互換性の問題は作るものによっても違うからね
jellyならそんな問題ないとおもうけど

55:デフォルトの名無しさん
21/11/17 10:05:17.45 syddc80l0.net
>>53
jellyッテの調べてみますです

56:デフォルトの名無しさん
21/11/17 14:33:19.47 syddc80l0.net
>>53
すみません。互換性に関して見つけられなかったです。
android5向けに作った場合、上位互換性ってあるんでしょうか?
javascriptのバージョン?次第とも考えられますけど

57:デフォルトの名無しさん
21/11/17 17:43:10.56 +3kxan1mM.net
androidの話はandroid開発スレで聞いてくれ
多分実機なしは無謀、5は古すぎでFA

58:デフォルトの名無しさん
21/11/18 06:50:53.17 TN6Tj1JF0.net
>>56
了解す

59:デフォルトの名無しさん
21/11/18 07:17:54.57 DvlppRWo0.net
そんなことはない
android5で使えるアプリが目的なんだから
android5で作成するのがベスト
reactNativeエンジンがどうエンコードして
androidで動かしてるのか分らんので
今のreactでandroid5のどの機能を使えるのか
全然わからんけどな

60:デフォルトの名無しさん
21/11/18 07:27:37.77 dAtvmzd9M.net
React NativeはAndroid 5.0以上に対応だね
URLリンク(github.com)

61:デフォルトの名無しさん
21/11/18 19:32:55.35 DvlppRWo0.net
API21からなんだな

62:デフォルトの名無しさん
21/11/19 12:50:28.04 zuBm2fI80.net
文字列化した数式を計算させるにはどうやればいいんですか?
test("x*x+10",2);
function test(suushiki_str,x){
var y = suushiki_str(この場合x*x+10)でx=2を代入;
retuen(y)
}
こういうのがやりたいんだけど

63:デフォルトの名無しさん
21/11/19 12:55:11.51 CS9Fe95O0.net
function test(suushiki_str,x){
return eval(suushiki_str)
}

64:デフォルトの名無しさん
21/11/19 13:17:09.00 zuBm2fI80.net
>>62
ありがとー

65:デフォルトの名無しさん
21/11/19 13:41:30.73 5MAibbygM.net
何がしたいのか分からないけど、設計自体が間違ってる気がするけどなあ

66:デフォルトの名無しさん
21/11/19 21:34:02.13 FkG8ODwP0.net
eval is evil
evalをそのまま使う事はまずないな

67:デフォルトの名無しさん
21/11/20 07:02:21.23 0rDRyz8e0.net
evalを使えとなw

68:デフォルトの名無しさん
21/11/20 07:04:06.68 0rDRyz8e0.net
evalが生きていること自体、JSが未成熟の証

69:デフォルトの名無しさん
21/11/20 07:46:31.86 0rDRyz8e0.net
>>61
evalは非推奨だから
function test(fun,x){
return fun(x);
}
test(function(x){return x*x+10},5);
としときましょう

70:デフォルトの名無しさん
21/11/20 18:55:29.17 BgP9vp1q0.net
evalって外部から入力させなければ使っても問題ないんじゃないの?

71:デフォルトの名無しさん
21/11/20 18:57:47.86 0rDRyz8e0.net
使いたければつかったらいいよ

72:デフォルトの名無しさん
21/11/20 19:05:52.91 Gd107dzfr.net
やっぱjavascriptできるとなんでも作れるな
めちゃくちゃ便利だわ

73:デフォルトの名無しさん
21/11/20 19:54:48.88 0rDRyz8e0.net
ブラウザ限定だし
HTMLと一緒でメンテナンスとか関係なければな
もしJSで金融システムみたいな厳格なシステム作ろうとしたら
開発者はみんな気がくるってしまうんじゃないかな

74:デフォルトの名無しさん
21/11/20 19:57:24.06 Gd107dzfr.net
マジでjavascriptだけでめちゃくちゃ儲けてる
使いこなせばガチで素晴らしい

75:デフォルトの名無しさん
21/11/20 20:02:17.98 4VXr5Xxs0.net
仕事で使ってるサイトをJavascriptで自動化できませんか?
たとえば出勤と退勤のときの時間を管理するのに「勤次郎」というサイトを使ってるんだけど
毎回ログインしたあといちいち入力するのが面倒くさい。

76:デフォルトの名無しさん
21/11/20 20:22:43.02 0rDRyz8e0.net
>>74
データーの保存はどこを想定してますか?

77:デフォルトの名無しさん
21/11/20 20:24:55.79 b48agA+u0.net
seleniumでいいじゃん

78:デフォルトの名無しさん
21/11/20 20:46:00.92 Gd107dzfr.net
認証しないシステムなんて攻撃か踏み台にされるとか考えないのか

79:デフォルトの名無しさん
21/11/20 21:05:08.87 t4XZd1270.net
定型をポチポチ入力してボタン押すのがダルい程度ならブックマークレットでいいだろ

80:デフォルトの名無しさん
21/11/21 08:08:40.09 zYUtuXs90.net
>>74
ブラウザを自動操作なら、iMacros は?
例えば漏れは、Ruby のselenium-webdriver で、
ブラウザを自動操作して、ヤフーにログインしてる
ユーザー名を入力して、ボタンを押す。
パスワードを入力して、ボタンを押すとか
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 10 # default timeout
driver.navigate.to "URLリンク(login.yahoo.co.jp)
element = driver.find_element(:id => "username")
element.send_key "ユーザー名"
driver.find_element(:id => "btnNext").click # ボタンを押す
element = driver.find_element(:id => "passwd")
element.send_key "パスワード"
driver.find_element(:id => "btnSubmit").click # ボタンを押す

81:デフォルトの名無しさん
21/11/21 18:31:02.25 8Vc5P3wO0.net
>>768
それだと数式を""で囲んで文字列にすると計算できない

82:デフォルトの名無しさん
21/11/21 18:31:35.22 8Vc5P3wO0.net
>>68

83:デフォルトの名無しさん
21/11/21 19:15:18.38 s72Bw1rA0.net
classが非推奨になるのはいつですか?

84:デフォルトの名無しさん
21/11/21 19:23:58.62 6CiZCeOJ0.net
>>82
その予定はない

85:デフォルトの名無しさん
21/11/21 21:16:08.25 CIU/fTVN0.net
>>81
>>70で答えてる
eval非推奨な意味を理解していて使うならそれでいいんじゃね?

86:デフォルトの名無しさん
21/11/21 21:19:33.19 QvzeRvg10.net
>>61
function test(suushiki_str, x){
var f = Function('x', 'return ' + suushiki_str);
return f(x);
}
test('x * x + 10' ,2);
//=> 14

87:デフォルトの名無しさん
21/11/21 22:55:28.72 EhgufZNWr.net
javascriptが使えるとやりたいことが簡単にできる

88:デフォルトの名無しさん
21/11/22 11:19:44.15 svQfIHqM0.net
>>86
JavaScript最強伝説。

89:デフォルトの名無しさん
21/11/22 14:30:42.59 zL7mhfu3r.net
ブラウザで動く
LambdaやGoogle Functionsで動く
デスクトップアプリも作れる
OfficeWeb版やGASでも動く
インフラ構築不要で最強すぎるだろ

90:デフォルトの名無しさん
21/11/22 16:46:08.87 svQfIHqM0.net
>>88
でも、文法が分かりにくい。
というか無駄に複雑過ぎる。

91:デフォルトの名無しさん
21/11/22 16:48:25.46 zL7mhfu3r.net
>>89
文法なんかふつう
複雑な意味がわからん
ほかの言語だと単純なの?

92:デフォルトの名無しさん
21/11/22 17:43:25.62 +p8qnn8E0.net
すいません、下記のように読み込んだshiftJISのcsvファイルを
正規表現を使って置換しようとしてるのですがうまくいきません
文字コードの問題なのか指定したマッチパターン意外の色んな文字が勝手に置換されてしまいます
const requestCSV = new XMLHttpRequest();
requestCSV.overrideMimeType('text/plain; charset=Shift_JIS');//csvの文字コードがshiftJSであることは変更できない
requestCSV.addEventListener('load', (event) => {
 const orgCSV = event.target.responseText;
 tempKey="["+key+"]";//keyは変数を使う必要があります
 keyName = new RegExp(tempKey, "g");//複数マッチさせる必要があります
 result=orgCSV.replace(keyName, "ほげ");
}
正規表現オブジェクトを使わずにreplaceさせると問題なく動くのですが、
マッチパターンを変数にしたいのと、複数回以上にマッチさせるため g をつけるため、
正規表現オブジェクトを使わざるを得ない状態です。
どなたかアドバイスお願いできますでしょうか

93:デフォルトの名無しさん
21/11/22 17:45:45.05 svQfIHqM0.net
>>90
Javaの方が分かりやすかった。

94:デフォルトの名無しさん
21/11/22 18:41:55.55 kseOISZ70.net
Javaと比べたらJavaScriptのほうが文法複雑じゃないと思うが…
TypeScriptと混同してない?

95:デフォルトの名無しさん
21/11/22 18:43:22.51 kseOISZ70.net
それかDOM APIをJavaScriptの文法に含むと勘違いしてるとか

96:デフォルトの名無しさん
21/11/22 18:50:50.35 jaRoUi/NM.net
Javaのほうが圧倒的にすっきりしている。
ほんとに両言語をちゃんと勉強したことあるか?
アルツハイマーでもこれくらい分かる。

97:デフォルトの名無しさん
21/11/22 18:53:04.86 yUT2zM6b0.net
>>91
keyを[]で囲む必要なし

98:デフォルトの名無しさん
21/11/22 18:54:55.94 LGR+CB3F0.net
>>94
古いJSとの互換性を取ろうとすると
古い文法も理解しないとならないからな
オブジェクトの生成も多種多様
JSの細かいところまで理解しようとすると
javaやpythonとかのほうが整理されていてわかりやすい
let obj var objのLexicalの違いや
let obj={}
let fun=function(){}
function fun(){}
class cs extends fun{}
class cs{
__proto__=a;
}
obj.constructor.prorotype=obj
newObjext ,Object.create
こんなのシンプルなわけがない
と92はいいたんだと思う

99:デフォルトの名無しさん
21/11/22 19:05:02.79 +p8qnn8E0.net
>>96
"["+key+"]"
というようにカッコで囲んだ形式で検索したいのでここはあえてそうしてるんです…

100:デフォルトの名無しさん
21/11/22 19:40:22.23 kseOISZ70.net
Java
class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
JavaScript
console.log("Hello World!");
hello worldからしてこれだからな
あなたの「シンプル」の定義を見せてもらえないと…

101:デフォルトの名無しさん
21/11/22 20:19:16.63 LGR+CB3F0.net
>>99
JSのクラスは疑似クラス
他言語のClassと同じように扱えるように
functionを疑似的にclass表現できるようにしてるだけ
Javaと異なりJSはconstructorを有するオブジェクトの生成方法が沢山ある
それすら理解できずに、99の問いとは、、、もっとJSを勉強しようぜ
Javaのほうが圧倒的に整理され覚える文法が少ない
つか、JavaとJS、両方ともそこそこ使えたら
99みたいなこと言えないだろw

102:デフォルトの名無しさん
21/11/22 20:26:36.75 LGR+CB3F0.net
>>99
もうちょっと言わせてもらえば
Javaは変数エラーをチェックしやすい言語設計
JSは変数エラーを無限に生成し得る言語設計
JSはマークアップを動的に処理することから発生し
高度な言語設計にしても互換性の問題から
古い文法を生かしているので、とても複雑怪奇になっている
そう表現したらわかるかな?

103:デフォルトの名無しさん
21/11/22 20:44:07.24 LDcgDFlhM.net
変数エラーとは

104:デフォルトの名無しさん
21/11/22 20:52:35.36 LDcgDFlhM.net
>>98
上手く行かない具体例出してよ
ぶっちゃけ[ ]の使い方ミスってる様な気がするんだけど

105:デフォルトの名無しさん
21/11/22 23:07:56.11 +p8qnn8E0.net
>>103
置換した具体例で言うと例えば
さっきの例で置換部分が
result=orgCSV.replace(keyName, "ほげ");
元のテキストが下記だとすると
<title>[name]</title>
結果が下記になってしまってなんじゃこりゃ…て感じですね
<titlほげ>[ほげaほげほげ]</titlほげ>
正規表現オブジェクトを使わなければ普通に成功します
result=orgCSV.replace("[name]", "ほげ"); //<title>ほげ</title>になる
しかし先述のようにマッチパターンを変数化しつつgをつけて複数置換する必要があるため難しいんです…

106:デフォルトの名無しさん
21/11/22 23:44:57.26 yUT2zM6b0.net
>>104
 tempKey="\\["+key+"\\]";

107:デフォルトの名無しさん
21/11/22 23:59:47.75 LPlgTaUb0.net
javascriptで計算の値がオーバーフロウするかどうかを調べるにはどうすればいいんですか?
例えば10000の10乗を計算しようとしてオーバーフロウするならばalertで計算できませんと
表示したいんだけど

108:デフォルトの名無しさん
21/11/23 00:04:12.05 KUvc8h5G0.net
>>104
[] は文字クラス
URLリンク(developer.mozilla.org)
更に、keyにメタキャラクタがあれば同じ事になるので、文字列全体をエスケープすべき
URLリンク(developer.mozilla.org)
上記は正規表現の基本
正規表現を体系的に学習すれば、絶対に気がついたこと
急がば回れ

109:デフォルトの名無しさん
21/11/23 00:07:12.09 KUvc8h5G0.net
>>106
BigIntと文字列比較

110:デフォルトの名無しさん
21/11/23 00:24:05.58 t+JcGiN60.net
>>100
なんでクラスの話に?詭弁では?
クラスベースの奴らがうるさいからclassなんて入れる羽目になったんだが。
そいつらのせいで木に竹を接ぐようなことさせられてむしろ複雑になった。
プロトタイプベースとしてシンプルでよかったのにほんと独善的でろくなことしない。
Reactでもクラスコンポーネントは廃れ99%のケースでFCになったよ。

111:デフォルトの名無しさん
21/11/23 01:06:21.92 cKz+CerT0.net
>>109
エセクラスベースは絶対に反対。
classは早期に非推奨にすべき。

112:デフォルトの名無しさん
21/11/23 01:17:09.89 SfFCbJaV0.net
>>105
>>107
ああ、なるほど、エスケープをダブルでつけないといけなかったんですね
シングルではつけてみていたんですがそれで動かなかったのであれって思ってました
資料の提示もありがとうございます!

113:デフォルトの名無しさん
21/11/23 07:20:19.58 A/hfu3xU0.net
>>102
その問いはマジ質問?
>>109
JavaとJsの言語設計に関して
どっちがすっきりしてるかを話ししてるだけだろ
疑似クラスなんてあること自体がお笑いだし
オブジェクト生成方法も多岐にわたるとか
どこが整理されてる言語なのかと

114:デフォルトの名無しさん
21/11/23 07:33:58.18 MZ1To5x7M.net
変数エラーでググっても出てこなかったです
何処の業界用語ですか?

115:デフォルトの名無しさん
21/11/23 08:34:50.37 Ln8GWMq+0.net
>>104
Ruby では、Regexp.escape で、
正規表現において、特別な意味を持つ文字の直前に、
エスケープ文字(バックスラッシュ)を挿入した、文字列を返す
p esc_1 = Regexp.escape( "[-a]" ) #=> "\\[\\-a\\]"
reg_1 = Regexp.new( esc_1 )
p reg_1.match( "x[-a]y" ) #<MatchData "[-a]">

116:デフォルトの名無しさん
21/11/23 09:26:25.23 AKV1HaX9M.net
>>112
お笑いと言えばJavaの無名クラスだろ
なんだったのアレ
関数がファーストクラスオブジェクトじゃなかった欠陥言語の苦肉の策とは言えとんでもなくキッタネェコード
今じゃラムダ関数使ってだーれも使ってないし
最初からそうしとけばよかったのにね
ぜんぜん整理されてなかったのかな?w

117:デフォルトの名無しさん
21/11/23 10:33:28.85 9dlC3Wki0.net
言語の完成度はJava>JS
学びやすさもJava>JS
だからと言って優劣を表現してるわけじゃないよ
マークアップ操作言語として
JS、HTML、CSS等との新旧互換性を担保しながら



118:長してきた言語だから 継ぎ接ぎ言語になっているのは仕方ないこと JSでできることは多いし楽しい言語であることを否定してるわけじゃないんだ でもJSが整理されてシンプルな言語であるとは言えないってだけ



119:デフォルトの名無しさん
21/11/23 10:45:11.29 jndULnQpr.net
javascriptさえあれば何もいらん
javascriptだけでスケーラブルなシステムが作れる

120:デフォルトの名無しさん
21/11/23 10:52:32.71 AKV1HaX9M.net
あまりにも面倒くさいため、誰もJavaでGUIを作らなくなりました。
やる気とAWT,Swingなど道具立てはあったのです。
ただJavaがクソ過ぎた。
イベントドリブンで必須のリスナー登録はこんな感じ(笑)
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("clicked");
}
});
一方C#ではデリゲートで簡単に書くことができました。
Javaはデリゲートが言語機能として無いのでマネできませんでしたw
結果今では誰もJavaでクライアントGUIプログラムを書きませんがC#はバリバリ使われてますw
結局Java8でJavaScriptをパクってlambdaで以下のように書けるようにしました(ハズカシーw)
button1.addActionListener(e -> System.out.println("clicked"));
しかし時すでにお寿司、誰もJavaでGUIを作っていないのであるwww
Javaはサーバーサイドに集中して成功者?
ノンノンw
Javaが糞でめんどくさくて誰も書かなくなったから廃れた、これがシンプルな答えですw

121:デフォルトの名無しさん
21/11/23 11:43:58.38 9dlC3Wki0.net
うん、わかった
確かにその通りです

122:デフォルトの名無しさん
21/11/23 15:55:58.57 MdPJopiF0.net
Android StudioではまだJava言語で開発が必要だったような

123:デフォルトの名無しさん
21/11/27 15:29:53.92 czi6N/jr0.net
0から9の入ったランダムの配列に適当に選んだnという数字が最大何個並んでいるか
これはどういう方法が早いのでしょうか
気にするほどでもないのでしょうか
配列を見ていくのは遅いとか言う話も聞いたような気もします
一般的にはどういう方法を取るのでしょうか
・配列の前から順にforでnであるか、あればカウンターインクリメント、なければカウンターリセット
・joinで配列を文字列化したあとforでi文字数ぶんのnを検索文字として includesがfalseになるまでか最悪配列数まで調べる
・文字列化したあとmatchで/n+/gで一覧を出して一覧の配列をmap(e=>e.length)で文字数にしてMath.maxで調べる

124:デフォルトの名無しさん
21/11/27 17:26:03.23 YexJKObKM.net
>>121
まずは自分で試して比べろよ

125:デフォルトの名無しさん
21/11/27 20:27:12.12 czi6N/jr0.net
コードはこんな感じでいいですか?
URLリンク(jsfiddle.net)
windows10 firefox 64bit 94.0.2のabout:newtabのコンソールでやった結果
11374, 1970, 2920
とかそれに似たような時間なんですが
同じ環境でJSFiddle に保存した際に実行された時間が
320, 1994, 2938
と1番目が早くなって結果が真逆になっています
どういう事なんでしょうか

126:デフォルトの名無しさん
21/11/27 21:17:39.73 czi6N/jr0.net
IronというChromeベースのブラウザでも試したところ
FirefoxからJSFiddleを開いてそこで走らせた時間と同じような結果になりました

127:デフォルトの名無しさん
21/11/27 22:00:25.94 w/hwUzDX0.net
element.addEventListener(
"mousemove",
function(e){alert(e.offsetX);}
);
このfunction(e)の部分はfunction(aaa,e,bbb){}のように引数を複数設定することはできますか?
e以外を渡すにはグローバルしかできないんですか?

128:デフォルトの名無しさん
21/11/27 23:25:49.55 QiKYnGor0.net
>>123
Firefox の Math.max() が激重っぽい(1万回の関数呼び出しが重い?)
三項演算子とかにすれば JSFiddle と同じくらい早くなる

129:デフォルトの名無しさん
21/11/27 23:48:23.24 czi6N/jr0.net
>>126
ありがとうございます。
Math.maxを使わず、
配列のまま計算させたほうがいいみたいですね。
3つ目もMath.maxを使ってますが使わないようにしても、
こちらはMath.max関数の呼び出し回数が1周1回なせいか短縮されませんでした。

130:デフォルトの名無しさん
21/11/28 12:42:42.78 TNNdgbH5M.net
>>123
1つめのバグっとるよ
2つめのは連続する数が大きいのでも確かめないとパフォーマンス特性が分からない
jsbench.meみたいなところで試すといい
アルゴリズムのオーダー考えれば単純ループが一番高速

131:デフォルトの名無しさん
21/11/28 21:15:40.16 P+UGlIn90.net
>>125
引数を複数設定できる。ただし、第一引数以外は何も渡されない。(デフォルト引数なんかの例外もある)
thisを渡せる。bind()とhandleEvent()を含むオブジェクトで渡せる。

132:デフォルトの名無しさん
21/11/28 21:21:54.23 PdYmCZpH0.net
>>128
ありがとうございます
サイトは次使う時に使って見たいと思いますw

133:デフォルトの名無しさん
21/11/28 21:29:03.95 eSM912u0M.net
>>125
どんな使い方をするのか想定コードを教えて
あと代入されるaaa,bbbの値はいつ確定する?
呼び出し時に確定するなら変数で置いとくしか無いし
関数定義する時点で確定してるなら引数にする必要が無い

134:デフォルトの名無しさん
21/11/29 12:33:33.13 nUjIBrRJ0.net
>>131
canvasの領域内をクリックしながらマウスを移動させたときの
canvas内のマウスの座標を得たいんだけど
mousedownでvar clickcyuu = 1;mouseupでclickcyuu=0;
mousemoveでclickcyuu===1ならばdrag_mouse_x = e.offsetX;drag_mouse_y = e.offsetY
とやりたかったのでfunction(e,clickcyuu){}としたかった

135:デフォルトの名無しさん
21/11/29 13:18:58.10 kIPjw4qWM.net
>>132
それだと結局グローバル変数参照してるのと同じじゃない?
わざわざ引数経由する理由がない

136:デフォルトの名無しさん
21/11/29 13:23:14.24 T3PYHNfj0.net
>>132
>>129の方法ではダメなのか?

137:デフォルトの名無しさん
21/11/29 15:20:06.33 0iOICyJy0.net
定期的にaddEventListener自体から引数渡したいって人出てくるけど
仮にできたとしてもaddEventListenerした時点で値が固定されることが考えから抜け落ちてるよね
>>132
引数渡したいならイベントハンドラに関数式使えば済むけど
複数のイベント仕込むなら一連の動作をこんな感じでclassかオブジェクトにした方が楽よ
URLリンク(jsfiddle.net)

138:デフォルトの名無しさん
21/11/29 15:41:30.31 cAtmNTK4M.net
クロージャ使えば普通にできるやろ
それに参照型ならaddEventListenerした後からでも値を変えられるよ

139:デフォルトの名無しさん
21/11/29 18:56:58.07 QQHq1BUR0.net
var か

140:デフォルトの名無しさん
21/11/29 20:17:26.02 T3PYHNfj0.net
>>135
オブジェクトを束縛すれば、プロパティは固定されない(>>129)
handleEventも使ってみればその有用性に気がつくと思うが

141:デフォルトの名無しさん
21/12/04 12:18:05.48 Zxe83BGy0.net
読み込みたいファイルのパスだけがわかっている場合に
reader= new FileReader();
reader.readAsText("aaa/hoge.csv") ;
みたいな感じで読み込もうと思ったんですが、
readAsTextの引数はblobだかfileオブジェクトでないとだめみたいで、
レファレンスを読んで見るも、
パスから


142:blogだかfileオブジェクトだかを作成する方法がわかりませんでした。 ファイル読み込み自体は他の方法を使ってできるものの、 FileReaderとreadAsTextの組み合わせを使ってトライしてみたいので どなたかアドバイスお願いできますでしょうか



143:デフォルトの名無しさん
21/12/04 12:36:24.21 6Q/yxXZX0.net
>>139
それが出来たら、ファイルの情報を盗み出せるようになるな

144:デフォルトの名無しさん
21/12/04 12:48:45.94 Zxe83BGy0.net
>>140
例えばxmlhttpRequest()でもパスからファイルを読み込むことが出来るので
FileReaderでそれが出来ないのは不思議な気になるんですがそういうものなんですかね

145:デフォルトの名無しさん
21/12/04 14:35:37.60 t4TtjIXNM.net
むしろ他の方法とやらが気になる

146:デフォルトの名無しさん
21/12/04 14:36:47.65 6Q/yxXZX0.net
>>141
xhrは基本的にhttp接続しか出来ない

147:デフォルトの名無しさん
21/12/04 16:15:20.01 4OadB/pcM.net
とりあえずリファレンス読め
URLリンク(developer.mozilla.org)

148:デフォルトの名無しさん
21/12/07 11:51:05.11 sVKUttQ/0.net
ガチでヌーブなんですけどrequestsとbeautifulsoupでスクレイピングやってます
waitかけないとバンされるよと言われましたがどうすればいいですか?
requests.get()でtimeoutは今書きましたがforで同じサイトの似たようなページに何度もアクセスするのでサーバーへの負荷はすごいと思います
これに対してどうすればいいですか?

149:デフォルトの名無しさん
21/12/07 11:56:58.02 PaA+NeG00.net
>>145
マルチ禁止

150:デフォルトの名無しさん
21/12/09 15:07:14.43 uyimWi/30.net
const test = [
{main:"A"},
{main:"B"},
{main:"C"}
]
から全てのmainをとり出した["A","B","C"]となる配列を作りたいです
forを使えば作れますが、もっと簡単に作れる便利なメソッドあったりしますか?

151:デフォルトの名無しさん
21/12/09 15:32:51.58 gfmL2AFS0.net
const test = [
{main:"A"},
{main:"B"},
{main:"C"}
]
let testB = test.map(e=>e.main)
知っててコレジャナイ方法をきいてるのかもしれないけど

152:デフォルトの名無しさん
21/12/09 15:38:12.28 uyimWi/30.net
>>148
自分もそれやってたけど不可能なので質問しましたが
どうやらqueryselectorAllにmapが効かないっていうのが原因だったみたいです
すんません

153:デフォルトの名無しさん
21/12/09 15:51:07.69 uyimWi/30.net
許して下さい…

154:デフォルトの名無しさん
21/12/09 16:09:45.62 CDvY1Ccm0.net
querySelectorAllの戻り値はArrayではなくNodeListだからね
hoge = Array.from(test).map(e => e.main);

155:デフォルトの名無しさん
21/12/10 03:36:53.73 TbLIJEp/M.net
hoge = Array.prototype.map.call(test,e => e.main);
とか

156:デフォルトの名無しさん
21/12/10 20:33:15.32 Kd0T5CdW0.net
Pythonの

157:デフォルトの名無しさん
21/12/10 20:34:21.58 Kd0T5CdW0.net
PythonのコードですがどなたかJavascriptに直して下さい…
sorted(pts, key=clockwiseangle_and_distance)
import math
pts = [[2,3], [5,2],[4,1],[3.5,1],[1,2],[2,1],[3,1],[3,3],[4,3]]
Origin = [2, 3]
refvec = [0, 1]
def clockwiseangle_and_distance(point):
 vector = [point[0]-Origin[0], point[1]-Origin[1]]
 lenvector = math.hypot(vector[0], vector[1])
 if lenvector == 0:
  return -math.pi, 0
 normalized = [vector[0]/lenvector, vector[1]/lenvector]
 dotprod = normalized[0]*refvec[0] + normalized[1]*refvec[1]
 diffprod = refvec[1]*normalized[0] - refvec[0]*normalized[1]
 angle = math.atan2(diffprod, dotprod)
 if angle < 0:
  return 2*math.pi+angle, lenvector
 return angle, lenvector

158:デフォルトの名無しさん
21/12/11 11:19:38.29 kTfvj9Ya0.net
すんません
var hoge = test(); //←2個入った


159:配列が返ってくるヤツ var A = hoge[0]; var B = hoge[1]; って書いてます。 これもーちょっとカッコよく var A B = test(); って感じで一行でAとBに変数に入れる方法とかあります?



160:デフォルトの名無しさん
21/12/11 11:55:24.52 4C+gjCbR0.net
var hoge = [1,9];
var [A,B] = hoge;

161:デフォルトの名無しさん
21/12/11 11:56:54.19 kTfvj9Ya0.net
>>156
うおーすげー天才
ありがとうございます!

162:デフォルトの名無しさん
21/12/12 17:05:57.60 neOkkgxzM.net
var obj={
key:{x:200,y:300}
}
obj.key2=500;
alert(obj.key2);
alert(obj.key.x);
上はオブジェクトで下はオブジェクトのオブジェクトです。
実行結果は上が500で下が200です。
一応動作はしますがこのような使い方は間違っていますか?

163:デフォルトの名無しさん
21/12/12 18:15:54.15 vioicQgx0.net
>>158
「間違っている」は「期待する動作」によって決定される
それをあなた自身しか知らないので、第三者による判断は不可能

164:デフォルトの名無しさん
21/12/12 18:40:13.36 MwcQtjtM0.net
>>159
文法的にはどうですか?

165:デフォルトの名無しさん
21/12/12 19:22:12.57 vioicQgx0.net
>>160
文法は他人に聞くまでもない
コンソールにSyntaxErrorが出力されていなければ、文法的に問題ない

166:デフォルトの名無しさん
21/12/12 20:06:45.86 A9cM/MPAM.net
何に引っかかってるのか書かないと期待してる答えは返ってこない
特に変なところないし

167:デフォルトの名無しさん
21/12/13 08:42:46.82 8aJMJMAP0.net
引数が多い場合の引数の渡し方について
function(
aaa,
bbb,
ccc,
・・・(略)
zzz
){}
って書くより
function(obj){
var aaa = obj.aaa;
var bbb = obj.bbb;
・・・・・(略)
var zzz = obj.zzz;
}
って書く方がいいんでしょうか?
どっちもメリット、デメリットはあると思うけど

168:デフォルトの名無しさん
21/12/13 13:06:28.94 CRKwXgwv0.net
>>163
何でこう無条件に善し悪しを求めようとするかね
メリット、デメリットがあるなら、どちらが良いと決めつけることは出来ないと判断出来ないものなのか

169:デフォルトの名無しさん
21/12/13 15:27:20.29 +BabEBNV0.net
下のほうなら
const f = function({aaa, bbb, zzz}){
console.log(aaa, bbb, zzz);
}
のほうが分かりやすくないか
const o = {
aaa: 'あ',
bbb: 42,
zzz: 'ん',
};
f(o);

170:デフォルトの名無しさん
21/12/13 18:56:15.12 hdHWXJOsM.net
>>136
形だけひとまとめにしても後でバラすんじゃなんの意味もない
objとかじゃなくて意味のある名前が付けられる範囲でまとめるべき

171:デフォルトの名無しさん
21/12/13 18:56:54.87 hdHWXJOsM.net
>>166>>163あて

172:デフォルトの名無しさん
21/12/14 13:31:35.06 qf3fX3jjM.net
var str="x^2 + (x+2)^2 - (x*(x-2))^3";
をMath.pow(x,2)+Math.pow((x+2),2)-
Math.pow((x*(x-2)),3)に置換するにはどうやればいいんですか?

173:デフォルトの名無しさん
21/12/14 15:01:16.14 82CERvuP0.net
Math.powを使わなければ簡単なんだけどね
eval(str.replace(/\^/g, '**'));

174:デフォルトの名無しさん
21/12/14 15:08:13.94 4lV7iDvz0.net
スペース含まない半角文字列限定。式の文字列つくるまで。
賢い人ならもうちょっとスマートに書けるかと。
var str="x^2+(x+2)^2-(x*(x-2))^3";
function func(s){
var s2=s.split('^');
var s3=s2[1].replace(/¥d+/,"");
return "Math.pow("+s2[0]+","+s2[1].replace(/[^¥d]/,"")+")"+s3;
}
var result=str.replace(/[a-z¥(¥)¥d¥*¥+¥-¥/]+¥^¥d+([¥+¥-¥*¥/]|$)/g,func);

175:デフォルトの名無しさん
21/12/14 18:05:48.23 ZmdmxRFm0.net
>>169
そうやった方が簡単そうですね
>>170
ありがとうございます

176:デフォルトの名無しさん
21/12/15 19:13:45.77 h9C3pi7L0.net
いつもはreplaceやmatchを使うんだけど、
execってのがキャプチャグループだけを簡単に抜き出せて便利そうだから使ってみました
txt="AabBxxB";
pattern = /A(.*)B/;
d=pattern.exec(txt);
alert(d[1]);

期待する結果はab
でも実際はabBxxが返ってきます、後方参照ってやつですか?一番後ろのものとマッチしてしまう
これって最短距離でのマッチを取得するにはどうすれば良いんでしょうか?

177:デフォルトの名無しさん
21/12/15 19:19:59.60 UjbkuvW00.net
.*?

178:デフォルトの名無しさん
21/12/15 19:20:26.59 LAChl8N10.net
ぱっとしかみてないけど
pattern = /A(.*?)B/;

179:デフォルトの名無しさん
21/12/15 19:22:08.15 Z/edc8620.net
A([^B]*)B

180:デフォルトの名無しさん
21/12/15 20:16:03.92 1LHweqXF0.net
( ^)o(^ )b

181:デフォルトの名無しさん
21/12/15 20:34:33.03 h9C3pi7L0.net
>>173
>>174,175
ありがとうございます
なるほど、*も+も?も単体で使うと最長一致になるけど
*?とか+?みたいに組み合わせて使うと最短一致になるんですね、ややこしい…

182:デフォルトの名無しさん
21/12/16 20:22:00.71 bW+aVaO40.net
>>177
その通りだが、一文字ならバックトラックが発生しない最長一致がいいと思う >>175

183:デフォルトの名無しさん
21/12/22 17:33:35.08 ONJh0jXva.net
【環境】Windows 7 64bit, IE11
【何をしたのか】
$("form")で取得している内容が自分の考えと正しいかを確認したい
1. alert($("form")) → [object Object]と表示される
2. alert(JSON.stringify($("form"))) → IEが動作を停止しましたで強制終了
【エラーメッセージ】-
【期待する結果】
$("form")の中身が確認したいです
手段は選びません
console.log()は試していませんがshowModalDialogにて新規で開かれるウィンドウが描画されるまでに行われる処理のようで、コンソールを開く前に終わってしまうためalertで今は試しています
【サンプルコード】
$("form").attr("name");

184:デフォルトの名無しさん
21/12/22 17:43:33.97 ONJh0jXva.net
>>179
自分は取得しているものが<form 〜>であると思っています
なのでHTMLが確認したいです

185:デフォルトの名無しさん
21/12/22 18:34:04.36 VeORz/HR0.net
試してみたらfirefoxだと強制終了しないね
IEは消したからわからん

186:デフォルトの名無しさん
21/12/22 20:25:41.33 WODdA7db0.net
>>179
試してないconsole.logやconsole.dirでいいと思うが、まず試してみては?
コンソールはモーダルウインドウが開いてなくても関係ない
あなたがほしいのは$("form")[0]な気はするが

187:デフォルトの名無しさん
21/12/22 20:33:32.43 WODdA7db0.net
モーダルウインドウ上でコンソール出力しようとせず、モーダルウインドウを開くページから参照するとか、breakpointで止めるとか、モーダルウインドウを閉じるコードを一時的にコメントアウトするとか
モーダルウインドウを使わないのが一番だが
、Win7を使ってるならインターネットに接続してないのだろうし、相当特殊な環境だな

188:デフォルトの名無しさん
21/12/22 22:15:47.78 oJlbnIXA0.net
>>181-183
ありがとうございます
>>182,183
お察しの通り過去に作られたIE用のシステムをEdgeに対応する必要があり、
現時点では当時の開発環境(VS2012)でデバッグ実行しています
JavaScriptに関わるのが初めてでとにかく動かして覚えようとしているところです
$("form")[0]は明日試してみます
console.logなどを試していない(諦めた)理由は、
動作として、親ウィンドウからshowModalDialogで子ウィンドウを開く
→子でデータを選択する→親に選択したデータが入力される という流れになっており、
親画面でF12のコンソールを開いておいても子が開かれるとモーダルにより親画面のコンソールも触れない
ので諦めたんですが、もしかしてピン止め外すと止まらないんですかね?
ピン止めした状態でしか動かしてなかったので明日試してみようとおもいます
>モーダルウインドウを開くページから参照するとか、
ウィンドウ間のやりとりがまだよくわからないのでその発想に至れませんでした
>breakpointで止めるとか、
showModalDialogで開いた後に処理される関数に貼ってみたんですが
張っていないshowModalDialogの行で止まって、関数の中をステップ実行できなかったんですよね…
関数の最初にdialogArgumentsを参照してifで分岐するんですが
showModalDialog以外で呼ばれるときはステップ実行できるのでそういうものなのかと諦めました
>モーダルウインドウを閉じるコードを一時的にコメントアウトするとか
その発想はなかったです
今後のデバッグに使ってみます
ひとまず、$("form")[0]とピン止めを試してみます

189:デフォルトの名無しさん
21/12/27 21:01:36.58 XB7P0UiP0.net
html5のcanvasについて質問です
drawImageでこの画像をcanvasに描写した後、画像の白い部分だけを赤くマスクしたいです
URLリンク(illust8.com)
ctx.globalCompositeOperation = 'destination-in';

c2.globalCompositeOperation = 'darken';
を使うとオシイのですが、どうしても黒い箇所が赤くそまってしまったり、明るい方が優先されてしまったりします
何か良い手はないでしょうか?

190:デフォルトの名無しさん
21/12/28 10:31:30.75 ChI3TD7z0.net
今後はclassが標準になるの?

191:デフォルトの名無しさん
21/12/28 10:36:46.52 ChI3TD7z0.net
JavaScriptのクラスは、内部的にはsuperキーワードが追加された以外は以前と変わっていません。

そのため、以前できなかったことは、今でもできません。

クラス定義を使えば、わかりやすいコードを作れるという意見もありますが、誰にとってわかりやすいかいまいち不明。
prototypeを隠蔽しているので、初心者がJavaScriptの本質を理解しにくくなる気もします。

class構文は内部でどんな置き換えをしているのか、ということを理解してからでないと、勉強にならないですね。
でも理解したら、わざわざclassを使う必要がない気がします。

使いたければ使えばいいんじゃない?と思います。

192:デフォルトの名無しさん
21/12/28 12:53:44.91 s8DIRgNG0.net
>>186-187
自問自答?
使いたくなければ使わなければいいと思うが、定期的にネガキャンするのは無駄なので、止めて欲しい
>>82,110

193:デフォルトの名無しさん
21/12/28 13:05:03.77 ChI3TD7z0.net
JavaScriptのクラスは、内部的にはsuperキーワードが追加された以外は以前と変わっていません。
そのため、以前できなかったことは、今でもできません。
クラス定義を使えば、わかりやすいコードを作れるという意見もありますが、
誰にとってわかりやすいかいまいち不明。
prototypeを隠蔽しているので、初心者がJavaScriptの本質を理解しにくくなる気もします。
class構文は内部でどんな置き換えをしているのか、ということを理解してからでないと、
勉強にならないですね。
でも理解したら、わざわざclassを使う必要がない気がします。

194:デフォルトの名無しさん
21/12/28 13:28:00.05 ediH0wTa0.net
>>179
const form = $( 'form' )
console.log( form.length, form[ 0 ] )
HTML 内に、フォームが1つしかないなら、
form.length は1 で、form[ 0 ] でform 要素を取得できる
<form action="" id="form_1" name="form_1">
みたいに、id を付けた方が良いかも
そうすれば、これで取得できる
const form_1 = $( '#form_1' )
まあ、HTML, JavaScript, jQuery の質問は、
この板よりも、web制作管理板の方へ書き込んでください
向こうのスレが、本スレです

195:デフォルトの名無しさん
21/12/28 13:30:12.08 ediH0wTa0.net
今は、class を使う
今さら、prototype を使う人は、いない

196:デフォルトの名無しさん
21/12/28 13:50:08.36 ChI3TD7z0.net
>>191
内部構造が分かりにくい。

197:デフォルトの名無しさん
21/12/28 14:58:53.60 Gh6bV9aa0.net
ワイにとってはclassのほうが分かりやすいかな

198:デフォルトの名無しさん
21/12/28 16:37:46.66 ChI3TD7z0.net
すごい。
みんな頭いいんだな。

199:デフォルトの名無しさん
21/12/28 17:14:08.11 jIrgILJka.net
まあな

200:デフォルトの名無しさん
21/12/28 18:05:32.60 VM83xPh40.net
中がprototypeだとか別に関係ないだろう。外から見てclassとして振舞うならそれでいいわけだし。
classとしての振る舞いに何か問題があるならそこは注意すべきだが。

201:デフォルトの名無しさん
21/12/28 19:24:57.81 ChI3TD7z0.net
みなさんjavascript何年目?
オレは2年。

202:デフォルトの名無しさん
21/12/31 00:19:23.87 K3Q5NoN00.net
 昼食が3億!?AppleCEOや投資の神様とのランチ権オークションがすごい
スティーブ・ジョブズが亡くなった後にAppleのCEOになったのがティム・クック氏です。
そんな彼との1時間のランチ権が今年4月から5月にかけてCharitybuzzというオークションサイトに
出品され、$515,000(約5,150万円)で落札されました!
実はクックは過去にも同様の出品をしていて、今年の出品で4回目となります。
2000年からこれまでに計17回出品されているのが、「投資の神様」とも呼ばれるウォーレン・バフェット氏
とのランチミーティング権。2003年からは、世界最大級のオークションサイト「eBay」で毎年開催される
チャリティー・オークションのひとつとして出品されています。
今年6月に出品された際には、なんと$3,456,789(約3億4,568万円)で落札されました! 

203:デフォルトの名無しさん
22/01/02 11:53:11.76 qPLPCP6o0.net
fc2ブログを使用しているのですが、javascriptが動かない設定などあったりするのでしょうか?
<script type="text/javascript">alert("hoge");</script>
また、動かない原因をブラウザの検証から調べる事はできますか?

204:デフォルトの名無しさん
22/01/02 12:00:54.33 qPLPCP6o0.net
自己解決 すみませんす

205:デフォルトの名無しさん
22/01/03 10:30:02.94 ciAHc7bt0.net
文字数の制限をしたいのですが、htmlでoverflow hiddenするのとjsでカットするのはどちらがいいんでしょうか?
ブログのトップページなんですが、本文の1部を表示させておいて、続きを読むというリンクを設置したいなと。
<div id="text">123456789</div>
<script>
let text = document.getElementById("text");
let inner_text = text.innerHTML;
let text_length = inner_text.length;
let max_length = 5;
if(text_length > max_length){
console.log("5文字超えてます");
text.innerHTML = inner_text.substr(0,max_length);
}
</script>
これで動きはしましたけど

206:デフォルトの名無しさん
22/01/04 19:09:00.18 NiWy5jYJ0.net
x=<span id="x">0</span>,y=<span id="y">0</span>
<p> </p>
<div style="text-align:center">
<canvas id="canvas"></canvas>
</div>
<スクリプト>
var canvas_elm = document.getElementById("canvas");
var x_elm = document.getElementById("x");
var y_elm = document.getElementById("y");
var context = canvas_elm.getContext("2d");
canvas_elm.width = 600;
canvas_elm.height = 500;
context.fillStyle = "#0000ff";
context.fillRect(0,0,canvas_elm.width,canvas_elm.height);
canvas_elm.addEventListener(
"mousemove",
function(e){
x_elm.innerHTML = e.offsetX;
y_elm.innerHTML = e.offsetY;
}
);
</スクリプト>
canvas上でのマウスやタッチポインターの座標を表示したいんですけど、、PCではこれで座標が表示されるけど
mousemoveをtouchmoveにしてchromeでF12キーを押してスマホモードにしてタッチポインターを動かしたときxy座標がundefinedと表示されてしまいます。
スマホモードでもポインターの位置を表示できるようにするにはどうやればいいんですか?

207:デフォルトの名無しさん
22/01/04 19:25:07.68 vw+5Ecnq0.net
スマホなど、色々なデバイスに対応させるのは、
React, Vue.js などのフレームワークを使うのでは?
それと、JavaScript の質問は、この板よりも、
web制作管理板の方へ書き込んでください!
この板のスレは、荒らしが出て、緊急避難用に立てたものだから

208:デフォルトの名無しさん
22/01/04 19:34:13.24 vw+5Ecnq0.net
>>201
Ruby on Rails では、続きを読むのは、truncate(文字数)。
Railsがどういう実装をしているかまでは知らないけど
npm とか、Lodash とかに、そういう関数が無いのか?
「javascript 続きを読む」「css 続きを読む」で検索してみれば?

209:デフォルトの名無しさん
22/01/04 20:53:53.77 QGpHZiP/0.net
>>202
タッチイベントにはevent.offsetX, event.offsetYはありません
event.changedTouches[0].pageX等から計算してください

210:デフォルトの名無しさん
22/01/04 22:55:40.12 NiWy5jYJ0.net
そうなんですか
ありがとうございます

211:デフォルトの名無しさん
22/01/05 10:08:51.69 D2CbxegU0.net
>>206
どう致しまして。

212:デフォルトの名無しさん
22/01/06 12:37:03.20 qVRSVavo0.net
質問1 element.addeventlistnerとdocument.addeventlistnerの違いは?
質問2 
function(elm){
elm.addeventlistner(
"click",
function(e){alert("クリック");}
);
}
のような関数がある場合document.addeventlistnerの場合はelementがないので個別に関数作らないとだめなのか?

213:デフォルトの名無しさん
22/01/06 12:51:53.90 /RkhTEU50.net
外側・親に、イベントを付けて、親で、子のイベントをキャッチできる。
jQuery で書いた
<div id="btn-wrap">
<button class="BtnA BtnAll" value="1">A-1</button>
<button class="BtnA BtnAll" value="2">A-2</button>
<button class="BtnB BtnAll" value="3">B-3</button>
</div>
// 外側・親に、イベントを付けて、親で、子のイベントをキャッチする
$( '#btn-wrap' ).on( 'click', function ( event ) {
console.log( $( event.target ).prop( 'value' ) )
} );
この板よりも、web制作管理板の方へ書き込んでください!
そちらの方が、本スレです

214:デフォルトの名無しさん
22/01/06 13:04:40.48 nb3ueMLOM.net
>>208
1. 対象要素が違うだけ。バブリングによって「あらゆる要素」のイベントをトラップしたい場合は後者を使うといい(一般的には普通は比較的近いコンテナ要素でトラップするもんだが...)
2. その関数なら共通でOK
>>209
本当に誘導したいなら、せめてリンクを貼りましょう

215:デフォルトの名無しさん
22/01/06 14:19:29.65 j/6fwGrk0.net
このスレで質問しても何の問題もありません
荒らしやアフィリエイト宣伝業者に騙されて誘導されないようにしてください

216:デフォルトの名無しさん
22/01/06 15:06:56.73 cXhLxUi00.net
>>208
回答1
event.currentTargetが異なる
回答2
e.targetを確認すれば良い

217:デフォルトの名無しさん
22/01/06 15:09:56.94 cXhLxUi00.net
>>209
Web制作板でも次スレが立たず、旧スレを再利用してる状態
本スレなど存在していない
本気で本スレに誘導したいなら、最新スレを探して次スレを立てて保守すべき
それぐらいの情熱がある人はもういないと思ってたが、あなたがそうしたいのなら止めはしない

218:209
22/01/06 16:09:40.84 /RkhTEU50.net
この板のスレは元々、web制作管理板が荒らされた時に、緊急避難用に立てられたもの。
本スレは、向こうの方
この板は荒らしが多い
荒らしは短文で、必ず2回書き込む。
複数回書き込むことで、多くの人が書いているように見せる
それと、テンプレをしょっちゅう、自分が有利なように書き換える
Python のスレのテンプレとか、ひどい。
NGワードは何々とか、しょっちゅう書き換えている
まあ、ソースコードを書かない香具師は、
プログラマーじゃないから、相手にしない方がよい

219:デフォルトの名無しさん
22/01/06 21:02:16.03 Ozp6fgWI0.net
window.onload = function(){
}
このfunctionって何の意味があるんですかね?

220:デフォルトの名無しさん
22/01/06 21:09:14.63 N8zU5Utu0.net
中の変数とかを外から見えなくしてるんじゃない?

221:デフォルトの名無しさん
22/01/06 21:28:50.56 aRDKku+G0.net
>>215
変数 = function() { ... }
で関数式(無名関数)っていう形で定義できる
関数式についての説明はこの辺を参照
URLリンク(ja.javascript.info)
URLリンク(developer.mozilla.org)
で、window.onload = function() { ... }
っていう風に実装すると、少し特殊な動きになって
HTMLを完全に読み込んだタイミングで、関数の中身を実行するっていう動きになる
URLリンク(developer.mozilla.org)
(他言語だとあんまり見ない書き方だから混乱するかもしれんけど)

222:超面白いyoutubeチャンネル
22/01/06 21:52:51.91 eAd55W1B0.net
URLリンク(www.youtube.com)

223:デフォルトの名無しさん
22/01/07 07:23:20.82 RiDo7mPm0.net
>>217
変数に関数を入れられるんですよね。
処理を直には入れられないから、関数で包むとイメージなんでしょうかね。

224:デフォルトの名無しさん
22/01/07 13:51:45.20 RiDo7mPm0.net
<div class="content">
<h2>header2</h2>
<h2>header2-2</h2>
<h2>header2-3</h2>
<h2>header2-4</h2>
</div>

<script>
let content = document.getElementsByClassName("content");
let all_element = content.querySelectorAll("h2");
console.log(all_element);
</script>
gebcnで取得したターゲットにqueryselectorは使えないんでしょうか?
idで取得したものなら可能なんですけども。

225:デフォルトの名無しさん
22/01/07 14:27:21.79 YQSfQDAQ0.net
>>220
contentはgetElementsでHTMLCollectionをとってるので
content[0]とかにすればでるんじゃない?

226:デフォルトの名無しさん
22/01/07 18:28:49.81 RiDo7mPm0.net
>>221
返り値が違うんですね。
要素だけを取ってくるもんだと思っていました。
ありがとうございます。

227:デフォルトの名無しさん
22/01/07 18:31:00.59 RiDo7mPm0.net
エレメントしかいらないのならid使ったほうが良いみたいですね

228:デフォルトの名無しさん
22/01/07 18:36:46.10 HaEbTiQw0.net
document.querySelectorAll(".content > h2");
でよくね?

229:デフォルトの名無しさん
22/01/07 20:54:20.38 RiDo7mPm0.net
こういった場合クラスを使うんでしょうか?
cssではidは出来るだけ使わないということになっているらしいですが

230:デフォルトの名無しさん
22/01/07 21:09:58.61 /l7S/g/G0.net
できるだけ使わないというか詳細度に関わる
1ページ一回というユニークルールもcss使い回しに不向き

231:デフォルトの名無しさん
22/01/08 05:37:14.84 ly/XOtiZ0.net
classnameでやってみますです

232:デフォルトの名無しさん
22/01/08 05:41:40.78 ly/XOtiZ0.net
>>224
そうやって書けるんすね
html collectionの構造がよくわからんくて

233:デフォルトの名無しさん
22/01/08 05:48:14.75 ly/XOtiZ0.net
>>224
いや、これだめでしたね
nodelistは帰ってきますけど、h2はとれてないです

234:デフォルトの名無しさん
22/01/08 05:55:36.78 fLniY7PXM.net
全てconstでOK

235:デフォルトの名無しさん
22/01/08 07:52:36.25 GNp2CfCTd.net
Android10 F-51A
Chrome 93.0.4577.62
ブラウザ上での画像についての質問です。
画像自体は恐らく読み込めているようなのですが、全く映らないか、映っても一瞬で消えてしまいます。
エラーメッセージは出ません。
ファイルマネージャーというアプリから起動すると、正常に動作します。
考えられる原因、解決案は、例えば何があるでしょうか。
絶対パスというものなら出来るかと思ったのですが、自分のやり方が悪いのか、上手く行きませんでした。

236:デフォルトの名無しさん
22/01/08 09:00:28.06 5hFueUuG0.net
>>229
最初の一個だけでいいなら
let all_element = document.querySelector(".content h2")

237:デフォルトの名無しさん
22/01/08 09:52:41.58 UKENl29p0.net
>>231
情報が少なすぎて詰めきれません。もう少し詳細な情報を提供できませんか?
(まず、JavaScriptはどのように使用していますか?)

238:デフォルトの名無しさん
22/01/08 10:15:27.19 GNp2CfCTd.net
>>233
スマホアプリの「QuickEdit」というテキストエディタで制作しています。
そういう意味じゃなかったらごめんなさい。
$Game_Image_Data = [];
$Game_Image_Data[0] = new Image(); $Game_Image_Data[0].src = "image/player.png";
これで「$Game_Image_Data[0].src」をアラートで出力すると、こうなります。
URLリンク(i.imgur.com)

239:デフォルトの名無しさん
22/01/08 14:43:01.70 ly/XOtiZ0.net
>>232
どうも。今回はindex使うことにしてみます。

240:231
22/01/08 17:15:55.99 GNp2CfCTd.net
可能な限り絞り込み? ました。
検証にご協力していただける方は、「imageフォルダに適当な「player.png」の画像を挿入して、実行してみてください。
ここまである程度余計な要素を取り除いたので、流石にこれならいけるんじゃないか? と思ったのですが、自分の環境ではやはり駄目でした。
よろしくお願いいたします。

241:231
22/01/08 17:19:01.00 GNp2CfCTd.net
<! html>
<html>
<head>
<meta ="utf-8"/>
<title>No_Name_Game</title>
</head>
<body>
<div id="Original_Game_Windows">
<canvas id="Game_Main_Window" width="640" height="480" style="background-color:#000000;"></canvas>
</div>
<style>
body { margin: 0; padding: 0; }
#Original_Game_Windows {
width: 640px;
height: 480px;
position: relative;
}
</style>
</body>

242:231
22/01/08 17:22:09.26 GNp2CfCTd.net
ごめんなさい、貼り付けるの無理でした。

243:デフォルトの名無しさん
22/01/08 17:26:57.57 c2V21ewI0.net
>>236
サーバーに画像アップロードしないとだめですよ?

244:231
22/01/08 17:42:45.65 GNp2CfCTd.net
URLリンク(www.axfc.net)

245:231
22/01/08 17:44:17.60 GNp2CfCTd.net
斧を使わせて貰いました。
よろしくお願いします。

246:231
22/01/08 17:44:45.13 GNp2CfCTd.net
>>239
もちろん承知しています。
それで試しても駄目でした。

247:デフォルトの名無しさん
22/01/08 18:53:38.87 c2V21ewI0.net
>>242
>>234のalertに表示されてるアドレスNot Foundだけど?

248:231
22/01/08 19:05:34.21 GNp2CfCTd.net
>>243
この文章って、そういう意味なのですか?
てっきり、アクセスは出来てるという意味だと勘違いしていました。
勉強不足で申し訳ありません。
ただ、今回は確実に、ちゃんと画像もフォルダ内にアップロードしたのですが、上手く行きませんでした。

URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

249:デフォルトの名無しさん
22/01/08 19:12:51.05 c2V21ewI0.net
>>244
頭のpが大文字じゃないですか…

250:231
22/01/08 19:26:33.45 GNp2CfCTd.net
>>245
ありがとうございました。
私が馬鹿すぎました。
ネタでやってたんじゃないです。ガチです。お騒がせしました。本当にありがとうございました。

251:231
22/01/08 19:30:48.95 GNp2CfCTd.net
>>24


252:5 報告までに。 一応確認したところ、無事成功しました。 ありがとうございました。



253:デフォルトの名無しさん
22/01/08 20:24:29.61 70jc3KgD0.net
ドンマイ

254:デフォルトの名無しさん
22/01/08 20:40:02.49 6njacc4u0.net
わりとやらかすミスだからしゃーない

255:デフォルトの名無しさん
22/01/09 01:12:15.51 lzN+drLE0.net
>>229
const elems = document.querySelectorAll(".content > h2");
console.log( elems, elems[ 0 ] )
これで、4つのh2が、ちゃんと取れている
NodeList(4) [h2, h2, h2, h2]
NodeList <h2>​header2​</h2>​
この板よりも、web制作管理板の方で聞いた方がよい。
向こうのスレが、本スレだから

256:デフォルトの名無しさん
22/01/09 01:27:51.26 wKoMs7Y50.net
そいつは、>1 のテンプレをしょっちゅう改変している、テンプレ改変荒らし。
基本的に、ソースコードを書かない香具師は荒らし
「Ruby, Rails, クソチョン」などを、NGワード登録推奨とか、
自分が有利なように、いつもテンプレを改変する
荒らしがスレ主として、居座っているので、
まともな人がスレ立てして、テンプレも元に戻した方がよい
荒らしは必ず、短文で2回以上書き込む。
必ず、複数人がいるように見せかける

257:デフォルトの名無しさん
22/01/09 02:26:51.89 WLNeqQAW0.net
>>251
統合失調症ですか?

258:デフォルトの名無しさん
22/01/09 10:47:02.34 94EdrQaq0.net
>>250
「本スレはない」といっても伝わってなかったんだな >>213
Web制作板のスレは長らく次スレが立ってない
複数ある過去スレ(重複)を質問者が好き勝手に選んで再利用してるだけ
利用者も「重複だから本スレはこちら」などの誘導は誰もやってないし、どれが本スレとか誰も把握してない
繰り返すが、そもそもスレ消化時に次スレが立たなかったのでWeb制作板の本スレは消滅している
Web制作板のスレを追いかけてきたなら知ってるはずなんだがな

259:デフォルトの名無しさん
22/01/09 10:50:05.66 zqBk0tn4M.net
>>250
本気で誘導したいならリンクを貼りましょう

260:231
22/01/09 11:32:48.03 8qT6W49sd.net
昨日はお世話になりました。
二日連続になって申し訳ないのですが、質問させていただきます。
localStorageに保存しておける文字数って、あんまり多くないのでしょうか?
2000×400字ほどで、エラーが出てしまいます。
2000×300字だと問題なかったので、やり方じゃなく文字数の関係なのかと思ったのですが、どうなんでしょうか。
ちなみに、配列、オブジェクト型データです。

261:デフォルトの名無しさん
22/01/09 11:40:12.10 81xkTGx10.net
>>255
文字数というより、localStorageのデータ保存量の上限は基本5MBで
ブラウザや個人設定によって変わってくる
URLリンク(www.htmq.com)

262:デフォルトの名無しさん
22/01/09 11:47:21.66 Km6Rc4Yy0.net
>>255
エラーとは?そこを詳しく説明して

263:デフォルトの名無しさん
22/01/09 11:51:03.02 RPzdd9tK0.net
変数や関数名の迷わない命名ルールってありますか?
変数は名詞、関数は動詞とは聞きますね。

264:231
22/01/09 11:56:07.27 8qT6W49sd.net
>>257
DOMEException { stack ~ってエラーです。
URLリンク(i.imgur.com)

265:デフォルトの名無しさん
22/01/09 12:09:04.30 Km6Rc4Yy0.net
>>259
exceeded the quota(割当超過)で確定
サイズ減らすかindexedDB使うか

266:デフォルトの名無しさん
22/01/09 12:10:23.57 94EdrQaq0.net
>>258
言語仕様としては、使用可能文字があるのみで命名規則に縛りはない
ビルトイン関数/プロパティの慣習的にクラスはUpperCamelCase、関数はlow


267:erCamelCaseなので、守るとビルトインのコードと統一性が出来て良いだろう 後は採用しているコーディング規約を守れば良い 例えば、Google JavaScript Style Guide https://google.github.io/styleguide/jsguide.html#naming https://w.atwiki.jp/aias-jsstyleguide2/pages/13.html#va



268:231
22/01/09 12:16:18.69 8qT6W49sd.net
>>260
回答ありがとうございます。
サイズ減らしたくないので、indexdDBと言うものを調べてみようと思います。

269:デフォルトの名無しさん
22/01/09 12:39:38.59 RPzdd9tK0.net
>>261
回答どうも。
規則というか命名ルールみたいなものが知りたいなと。
迷ってる時間が無駄になっているので。

270:デフォルトの名無しさん
22/01/09 12:45:08.85 CpwtZL4w0.net
すいません、アホな質問かもしれません。
マウスの右ボタンクリックで独自のサブメニューを表示したいと思います。
この場合は JavaScriput が必須で、CSSでは出来ないという理解で良いでしょうか。

271:デフォルトの名無しさん
22/01/09 14:49:13.23 MpHyBZWL0.net
仕事関係なのと、JavaScript は全くの初心者なんで聞き辛いのですが、
【環境】 Raspberry Pi OS Ver10.11
【期待する結果】 文字列の後ろに 1バイトの値を付加したい。
シリアルで受信したメッセージから特定の値を抜き出して別のユニットにシリアルで送信
します。見様見真似とネットで調べながら、
set_Message: function (message) {
const _STX = '\x02'; // STX
const _ETX = '\x03'; // ETX
// 送信フレーム生成
var frame = _STX + message + _ETX;
// BCC 生成
var idx = 0;
var bcc = frame.charCodeAt(idx++);
do {
bcc ^= frame.charCodeAt(idx++);
} while (frame.charAt(idx) != '');
var buff = new ArrayBuffer(5);
var BCC = new DataView(buff);
BCC.setUint8(0, Number(bcc));
// 送信実行
var command = "echo -n " + frame + " > " + TTY_USB;
execsyncs(command);
command = "echo -n " + BCC.getUint8(0) + ',' + (bcc - 0) + ',' + Number(bcc) + ',' + parseInt(bcc, 10) + " > " + TTY_USB;
execsyncs(command);
return;
}
関数を作成、ブロックチェックコード BCC を計算させました。BCC を最後に付加したいのですが、
どれも値が 2バイトの文字列になってしまいます。"JavaScript" + "文字列を数値に変換" とかの
キーワードで検索しながら試行錯誤していますが、単純な数値にするヒントを頂ければ幸いです。
組み込みプログラマーなので、C と、C++ が少しわかります。

272:デフォルトの名無しさん
22/01/09 15:08:40.66 94EdrQaq0.net
>>263
ruleは日本語で規則
あなたのいう命名ルールと俺のいう命名規則は同じ

273:デフォルトの名無しさん
22/01/09 15:18:07.99 WLNeqQAW0.net
名前なんて違反しなきゃ好きにつけりゃいい
俺は長くなっても意味がわかる命名派
vとかiとか一文字の変数や定数を好む宗教も強い

274:デフォルトの名無しさん
22/01/09 15:28:05.42 94EdrQaq0.net
>>264
menu要素は非推奨になったし、JavaAcriptしかないのでは
少なくとCSSがブラウザ標準の動作を変更させることはないと思うし、右クリックを検知する方法はないと思う
コンテキストメニューの改変はアクセシビリティが低下する可能性が高いので、慎重に対応する必要はある
ゲームのような独自の操作方法を要求する場合は致し方ないが、多くの場合、ユーザはブラウザ標準の動作を期待する
独自メニューを提供することでブラウザ標準のメニューを使えなくなる事に不満を持つ
独自メニューとブラウザ標準のコンテキストメニューが両方出現するUIなら良いかもしれないが

275:デフォルトの名無しさん
22/01/09 15:29:28.78 94EdrQaq0.net
>>268の誤字修正
× JavaAcriptしかないのでは
○ JavaScriptしかないのでは

276:デフォルトの名無しさん
22/01/09 15:42:44.57 RPzdd9tK0.net
適当につけます(´・ω・`)

277:デフォルトの名無しさん
22/01/09 16:11:22.92 CpwtZL4w0.net
>>268
ありがとうございます!
Javascriptを使う必要がある件、了解です。
以前に .net で作ったWindowsアプリをWebアプリに移植しています。
Table上の特定のセルを右クリックしたら独自メニューが表示される仕様になります。
それ以外の場所では ブラウザ標準のコンテキストメニューが表示出来るようにしたいと思っています。
やり初めて間もないのですが、覚えることが多すぎて恐ろしい世界ですね。Webアプリとは。
Javascriptでやるにしても、JQueryかVueかReactか、どれでやるべきか・・・
バックエンドは Djangoですが、自分ひとりでやらないといけないので かなりの修行になりそうです。
あと、AWSのデプロイとか Dockerとか・・・・ 初めてのことばかりで・・・

278:デフォルトの名無しさん
22/01/09 16:51:11.22 94EdrQaq0.net
>>271
デスクトップアプリとWebアプリの一番の違いは実行環境が複数存在していることだろうな
クライアント環境を指定出来る社内向けWebアプリならブラウザを制限できるが、Webアプリを公開するなら、クロスブラウザが必須
デスクトップOSだけでもChrome,Fx,Edgeの対応が必要となる
(Operaもあるが、シェアが小さい)
モバイルOS版のブラウザも含めると更に大変になる
実装状況はcaniuseやMDNの互換表を見ると、ある程度は分かる
URLリンク(caniuse.com)
JavaScript標準の書き方を覚えてから、ライブラリ、フレームワークに手を付けるのが良いと思う
jQueryから入った人はDOMの知識が浅くて見当違いの質問をする事が多い
Vue,Reactは完全に別世界だが、DOMやECMAScriptの文法を理解してないと辛い
JavaScriptの基礎はおさえておいて損はない
最も、バックエンドが未着手なら、バックエンドの習得が先かと
JavaScriptもまとめて学習すると、おそらく混乱する
table要素の特定セルのコンテキストメニューの独自化なら大丈夫だと思う
Google スプレッドシートのWebアプリを想起した


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch