2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

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

1 :Name_Not_Found:2015/08/08(土) 12:43:43.71 ID:???.net
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

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

383 :Name_Not_Found:2023/04/03(月) 22:36:04.36 ID:???.net
>>382
そもそもTypeScriptを書こうとしてるわけじゃないのになんでtsエラーが出てるの?ってこと
vscode右下の言語モードがTypeScriptになってるんじゃないの?

384 :Name_Not_Found:2023/04/03(月) 23:01:10.11 ID:???.net
>>383
なってないです。拡張機能も無効です。
i.imgur.com/TE6gwcY.jpg

385 :Name_Not_Found:2023/04/03(月) 23:26:56.16 ID:???.net
>>384
うちではTSでは出るけどJSでは出ない
https://i.imgur.com/TJimdvc.png
https://i.imgur.com/kj2oMNk.png
おそらく何かvscode側の問題だろう
で、エディタの問題ならなおさらfruit.valueで解決とするのは悪手

386 :Name_Not_Found:2023/04/03(月) 23:39:06.45 ID:???.net
>>384
わかった、vscodeの設定に↓があるんじゃない?
"js/ts.implicitProjectConfig.checkJs": true
これ追加したらうちでもJSでエラー出た

387 :>>380:2023/04/03(月) 23:48:50.00 ID:???.net
>>385 >>380
原因が判明しました。"js/ts.implicitProjectConfig.checkJs"がtrueでした。
型のチェックはしたいので、event.target.valueの上に@ts-ignoreを書いて解決します。
ありがとうございました。

388 :>>380:2023/04/03(月) 23:51:00.10 ID:???.net
>>386
まさにそうでした。ありがとうございました。

389 :Name_Not_Found:2023/04/04(火) 00:27:18.41 ID:???.net
jQuery では、event.target.value でも、正常に動く

<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>

<div id="btn-wrap-2">
<button class="BtnC BtnAll" value="11">C-11</button>
</div>

$( function ( ) {
// 外側・親に、イベントを付けて、親で、子のイベントをキャッチする
$( '#btn-wrap' ).on( 'click', function ( event ) {
const value = $( event.target ).prop( 'value' )
console.log( value )
alert( value )
} );

$( '#btn-wrap-2' ).on( 'click', function ( event ) {
console.log( event.target.value )
alert( event.target.value )
});
} );

390 :Name_Not_Found:2023/04/04(火) 00:53:07.21 ID:???.net
>>387
@ts-ignoreもなんか負けたみたいでいやだけども調べてみてもいい解決策はなさそう
致し方なしかな

>>389
正常に動くかどうかの話はしてないよ
よく読もう

391 :Name_Not_Found:2023/04/04(火) 10:04:45.82 ID:???.net
fruitがHTMLSelectElementなのは確定してるから
event.currentTargetがHTMLSelectElementであることは推定できそうだな
event.target じゃなくて event.currentTarget にしたらどうなるかね

392 :Name_Not_Found:2023/04/04(火) 10:48:34.90 ID:???.net
>>387
型チェック入れるとか
if (null === event.target || !(event.target instanceof HTMLSelectElement)) { return; }
キャストするとか
console.log(/** @type {HTMLSelectElement} */ (event.target).value);

393 :Name_Not_Found:2023/04/04(火) 11:43:11.41 ID:???.net
>>392
そのへん少し試したけどうまくいかなくて諦めてた
致し方なしとか言う前にもう少し手を尽くすべきだった
反省

394 :>>380:2023/04/04(火) 19:16:22.79 ID:???.net
>>391
currentTargetもts(2339)が発生します

>>392
元々、nullチェックは'event.target' は 'null' の可能性があります。ts(18047)のエラーを消すために入れていたのですが、
条件を!(event.target instanceof HTMLSelectElement)に書き換えてもts(18047)とts(2339)は発生しないので、解決しました。
JSDocコメントでのキャストは気づきませんでした、こちらが適している場面があればこちらも利用していきます。ありがとうございました。

>>390 >>393
そうなんです、@ts-ignoreを使用している行で他のエラーが出た時に気づけなくなるので、あまり使用したくないです。
遅い時間までお付き合いいただき、ありがとうございました。

ところで、event.targetの代わりにfruitを使用すべきではない明確な理由はないが、event.targetを使用するのが(通常|普通|無難)である。ということで合っていますか。

395 :Name_Not_Found:2023/04/04(火) 22:54:34.70 ID:???.net
1つのイベントハンドラが複数の要素に対して設定されることは一般的で、その場合はevent.targetを使うことになる
今回のケースはそうでないにしても、可搬性や拡張性を考えれば常にevent.targetを使用しておくという判断は妥当だろう
あと処理結果は同じでも、イベントの起こった要素に対して処理をする、という意図をコードに残す意味もある

いずれにしろ現時点のそのコードだけを考えるならお好きなように

396 :>>380:2023/04/05(水) 00:34:18.58 ID:???.net
>>395
確かに以下のような場合にはEvent.targetを使う必要があるし、「意図をコードに残す」にとても合点がいきました。
<button data-x="1">btn1</button>
<button data-x="2">btn2</button>
const btns = document.querySelectorAll('button');
for (const b of btns) {
b.addEventListener('click', e => console.log(e.target.dataset.x));
}

397 :389:2023/04/05(水) 10:13:44.20 ID:???.net
>>389
に書いた

複数のコントローラーに、イベント登録する場合、
外側・親に、イベントを付けて、親側で子のイベントをキャッチする

398 :Name_Not_Found:2023/04/05(水) 11:14:44.19 ID:???.net
このjQuery信者は文脈や論点ってものを全く理解しないのな
jQueryでは~jQueryなら~ってただただ念仏を唱えて布教に励む様子がまさに信者

399 :Name_Not_Found:2023/04/05(水) 13:56:33.20 ID:???.net
Slickで出来てSwiperでできないようなアニメーション処理って何かある?

400 :Name_Not_Found:2023/04/06(木) 13:40:22.56 ID:???.net
Mathjaxって配列環境でcolspan, rowspanって使えないのか?
\multicolumnというべきか

401 :Name_Not_Found:2023/04/13(木) 11:04:39.61 ID:08KgWRFK.net
JavaScript でローカルファイルを読み書きするにはどうすればいいでしょうか?
fetchという関数が使えるかと思ったんですが、blocked by CORS policy というエラーになってしまいます。

402 :Name_Not_Found:2023/04/13(木) 14:00:39.10 ID:???.net
CORS(Cross-Origin Resource Sharing)制限は、
ローカルPC 上に、何かのサーバーを立てて、そこから配信すれば良い

VSCode の拡張機能、open in browser では、
file:/// から始まるローカルファイル・アクセスだから、CORS制限あり
file:///C:/Users/Owner/Documents/test.htm

一方、Live Server では、サーバーを立てているから、CORSにならない
http://127.0.0.1:5500/test.htm

同様に、コマンドプロンプト・PowerShell から、
1-liner で、Ruby で作られた遅いウェブサーバー、WEBrick を起動すると、
ruby -run -e httpd . -p 8080

これも、サーバー経由だから、CORSにならない
http://localhost:8080/test.htm

403 :Jun:2023/04/26(水) 01:05:22.69 ID:2ly3VJ6h.net ?2BP(0)
sssp://img.5ch.net/ico/nida.gif
JavaScriptで電卓を作るよ。

404 :Name_Not_Found:2023/04/27(木) 09:25:37.76 ID:???.net
ChatGPTを使って

405 :Jun:2023/04/27(木) 23:52:36.98 ID:qkYl27sL.net ?2BP(0)
sssp://img.5ch.net/ico/nida.gif
JavaScript + HTML + CSS で電卓やホームページを作るのが今の目標です。

406 :Name_Not_Found:2023/05/09(火) 15:14:09.97 ID:???.net
マイナーな質問

XyJaxで、一括して文字色を変える方法教えてくれ

\color{red}を使っても、その箇所だけしか変更できない。
\xymatrix環境内全部の文字色を変えたい

407 :Name_Not_Found:2023/05/10(水) 19:05:11.90 ID:???.net
>>406自己解決

408 :Name_Not_Found:2023/06/16(金) 12:40:56.37 ID:???.net
こんにちは。
誰か教えてください。

<style>
.def { color: red;}
</style>

<div>
<p class="abc">aaa</p>
</div>
<div>
<p class="abc">bbb</p>
</div>

<script>
dif = document.querySelectorAll('.abc');
dif.forEach(element => document.querySelector("div").classList.add("def"));
</script>

このようなコードですが、実行すると1つめのaaaを囲ってるdivにしかclassが追加されません。
条件にあるすべてのdivに追加するにはどうすればいいのでしょうか?

409 :Name_Not_Found:2023/06/16(金) 14:16:25.94 ID:???.net
>>408
document.querySelectorAll('.abc').forEach(element => element.closest("div").classList.add('def'));

410 :Name_Not_Found:2023/06/16(金) 14:24:00.49 ID:???.net
>>409
レスありがとうございます。
closestなんてものがあるのですね。知りませんでした。
おかげで思うように行きました。
ありがとうございます。

411 :Name_Not_Found:2023/06/16(金) 16:50:32.34 ID:???.net
>>408
これでもいけると思う
document.querySelectorAll('div:has(> .abc)').forEach(x=>x.classList.add('def'));

412 :Name_Not_Found:2023/06/16(金) 16:57:38.56 ID:???.net
これでもいいのかな?間になにか挟まってたらダメだけど
('div >:is(.abc)')

413 :Name_Not_Found:2023/06/16(金) 17:02:39.12 ID:???.net
>>411,412
こちらもありがとうございます。
大変助かります。

414 :Name_Not_Found:2023/07/14(金) 05:34:41.98 ID:zlYPgrgm.net
https://jsfiddle.net/um71qgzf/3/
こんな表示状態で、textarea に入力して改行していき、表示可能行数を超えると、スクロール状態になります。
入力された行数に応じて textarea が縦に伸びて、textareaのコンテナにあたる li もそれに応じて縦に伸びるようにするにはどうすればいいのでしょうか?

415 :Name_Not_Found:2023/07/14(金) 17:33:09.83 ID:???.net
自前でやろうとせずにライブラリ探してきたら?

416 :Name_Not_Found:2023/07/14(金) 17:53:03.06 ID:???.net
textarea 高さ 自動
でググるとそれっぽいのあったよ

417 :Name_Not_Found:2023/07/17(月) 03:34:14.72 ID:???.net
SELECTタグで、人物を選択出来るようにしたいのですが、SELECTが非展開の時はIDだけ表示して、
展開した時だけ、IDと人物名が表示されるようにする方法を教えてください。

人物配列

var array =
[
{
"id": 1,
"name": "人物1"
},
{
"id": 2,
"name": "人物2"
}
]


こんな表示にしたいです。

https://i.imgur.com/WWwRHPV.jpg

418 :Name_Not_Found:2023/07/17(月) 08:04:52.05 ID:???.net
展開したときにどこにID表示されてるの?

419 :Name_Not_Found:2023/07/17(月) 12:41:46.99 ID:???.net
>>417
一応確認するが、非展開時に数字にする意図は何?
フォーム送信時に数字を送信したいだけなら、尊信値(value属性値)と表示する選択肢(子要素の文字列)を分けて書くだけで良いのだが

420 :Name_Not_Found:2023/07/19(水) 04:29:50.61 ID:???.net
https://getbootstrap.jp/docs/5.0/components/dropdowns/

Bootstrap 5 のDropdowns のページの一番最後に、
ドロップダウンイベントについて書いてある

show.bs.dropdown/shown.bs.dropdown

このイベント発生時に、表示テキストを入れ替えれば?

421 :Name_Not_Found:2023/07/25(火) 00:23:24.85 ID:???.net
(-。-)y-゜゜゜

422 :Name_Not_Found:2023/11/20(月) 22:52:12.45 ID:???.net
何をしていいか分からないな…

423 :Name_Not_Found:2023/12/12(火) 22:36:34.47 ID:???.net
変数名はキャメルケース(getNameなど)がよく使われるようですが、
スネークケース(get_nameなど)はやはり使わない方がいいですか?

424 :Name_Not_Found:2024/02/28(水) 02:36:50.61 ID:pCYviIFS.net
https://liveweave.com/6IlWRJ

JavaScriptでスプリッターを作っているのですが、左右を分割するスプリッターをマウスで動かしても、マウスの位置とずれてしまいます。
どのように修正すればいいのでしょうか。

425 :Name_Not_Found:2024/03/28(木) 04:02:18.18 ID:???.net
>>423
良いか悪いかはさておき

考え方としては
そのコードを、どのくらいの範囲で共有するのか
ってのを基準に考えたらいいと思う

自分だけなら好きにすればいいし
身内だけなら話して決めればいいし
広範囲なら世間一般の流れに合わせるべき

みたいな

426 :Name_Not_Found:2024/03/28(木) 04:07:49.72 ID:???.net
>>417
すんごい前だけど
似たようなことを頑張ったことある

でもやっぱり
select要素が開いているかどうかを判定出来ないので
原理的に出来なくて

select要素のように振る舞うものを
手作りするのが早かったです

427 :Name_Not_Found:2024/04/08(月) 00:13:34.85 ID:???.net
今動作しているのがサーバ上(https//:~)なのかローカル(file:///C:~)なのか区別する必要性が出てきました。
locationで取得する以外にいい方法ありますか?
区別さえ確実にできれば得られる値は(true/falseなど)なんでもいいです。

428 :Name_Not_Found:2024/04/08(月) 12:44:09.64 ID:???.net
>>427
window.location.protocolを見れば良いんじゃないかな
httpかhttpsなら、みたいな

429 :Name_Not_Found:2024/04/18(木) 13:55:10.68 ID:NjgPbiyX.net
var people = [{
"id" : "ID1", "name" : "人物1", "room" : "1"
}{
"id" : "ID2", "name" : "人物2", "room" : "2"
}]

var select_tag = document.getELementById("my_select");

for ( var i = 0; i < people.length; i++ ) {
var option = document.createElement("option");
option.value = people[i].id;
option.innerText = people[i].name;
my_select.append(option);
}

こういう感じの select を設置して、option が選択された時に、選択された人物の room を取得するにはどうすればよいのでしょうか?

430 :Name_Not_Found:2024/04/18(木) 17:45:29.04 ID:???.net
>>429
select_tag.selectedIndexに
今選ばれてるoptionが何番目かが入ってるから

select_tagのchangeイベントにフックして
その数字を拾って、people[数字].idを参照したらいいよ

431 :Name_Not_Found:2024/04/18(木) 17:53:34.56 ID:???.net
ごめん間違えた
people[数字].roomだった
すまんこ

432 :Name_Not_Found:2024/04/19(金) 02:15:05.41 ID:???.net
>>431
出来ました!ありがとうございます!

select_tag.addEventListener("change", (e) =>{
let i = select_tag.selectedIndex;
alert(people[i].room);
});

148 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★