[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/25 03:31 / Filesize : 355 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

JavaScript の質問用スレッド vol.125



1 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 15:57:40.26 ID:TS5TGpUB0.net]
!extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。次スレは>>950>>2の「次スレの立て方」を元に立ててください

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

■前スレ
JavaScript の質問用スレッド vol.124
https://mevius.5ch.net/test/read.cgi/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured

756 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 15:40:55.59 ID:T8cp6VGg0.net]
Xamppつかっておけばよろし

757 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 19:03:06.43 ID:xpgWDt8BH.net]
>>742
vscodeって使える?すごく簡単なエディタ
そのエディタでliveServerっていう拡張があるんだけど使えるか試してみたら?

758 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 21:30:20.18 ID:HGxbjpaKd.net]
Promise.race()で複数のPromiseを渡して、最初に終了したタスクのPromiseを受け取ったあと、同様に順次残りのタスクを完了したものから受け取るような書き方はできますか?
(最終的にすべての非同期タスクの終了まで繰り返す)

Pythonでいう、as_completedのように複数非同期タスクを、終了次第順次ループで受け取るような形です。

759 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:35:04.92 ID:DxTl2kdL0.net]
>>743 >>744
vscodeの方を使わせて頂きました。お二方ともアドバイス、ありがとうございました。

余談ですが、jsonファイルに単なる文字列(あああ、abc、123)などを単発で格納するとしても、「名前:値」のフォーマットは守らないといけないんでしょうか(名前をいちいち宣言しないとダメなのか)。

760 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:36:07.26 ID:DxTl2kdL0.net]
正確には「{"名前":値}」ですね。省略できれば楽だなと思ったのですが。

761 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:59:08.70 ID:4pa7IAk9d.net]
{"名前":値}はあくまでオブジェクトの形式であって文字列や数値のみを返したいなら不要
ただし文字列は"あああ"や"abc"とする必要はある
https://www.json.org/json-ja.html

762 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:08:00.26 ID:DxTl2kdL0.net]
ありがとうございます。おそらく

"abc", "あああ"

のようなカンマ区切りで大丈夫でしょうか。

763 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:20:25.80 ID:S0dCUzy1d.net]
単一の値でない場合は配列にすること
["abc", "あああ"]

有効なjson形式かどうかはJSON.parse()に食わせてみるといい
JSON.parse('"abc", "あああ"'); //NG
JSON.parse('["abc", "あああ"]'); //OK

764 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 14:04:53.34 ID:DxTl2kdL0.net]
>>750
参考になりました。ありがとうございます。



765 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 15:26:18.81 ID:FTc6ajskM.net]
>>745
各promise完了後に順次実行したい共通処理をmapしてthenでチェイン

Promise.all(promises.map(p=>p.then(log(“resolved”)))).then(log(“All finished”);

function log(message=“”) {
return (x) => {
console.log(`${message}: ${x}`);
return x;
}
}

766 名前:デフォルトの名無しさん [2023/03/19(日) 16:15:48.14 ID:/GeuLHtL0.net]
趣味でWebサイトを使うのにJSを勉強しだしてまだ3年目なのですが、
なぜか年明けから会社のDX担当にされました。
今社内システムがIE9向けにActiveXが使われているのですが、Edgeに移行するので動くように直してと言われています。
これまで自分なりにいろいろ調べてきて、とりあえずHTML/CSSなどの見た目の部分と、大したことをしていないJSの部分は移行できたのですが、
肝心のActiveXであれこれやっているところを直すことができません。
期限は3月末までで苦しんでいます。

例えばこのような箇所があります。
var connection = new ActiveXObject("ADODB.Connection")
var recordset = new ActiveXObject("ADODB.Recordset")
var connectionString = "Provider=sqloledb;Data Source=〜〜〜
var query = "〜〜〜
connection.Open(connectionString)
recordset.Open(query, connection)
while (!recordset.EOF) {
var encryptedData = recordset.Fields("data").value
var decryptedData = decryptData(encryptedData, decryptionKey)
〜〜〜
recordset.MoveNext()
}
これをEdgeで代替手段で実装しようと思ったら、どのようなコードになりますか?
ライブラリやフレームワークは使ってはいけないことになっていますが、バレなさそうなものなら中に組み込むつもりです。
どうかよろしくお願いします。

767 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 16:36:55.71 ID:HI67bUFb0.net]
代替手段なんてない
仕事振ったやつが何も分かってない

あれこれやってる内容をなにか別の技術で1から組み立てる必要あり
それかedgeのIEモードは検討出来ないの?

768 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 17:21:20.47 ID:HTlOdPesM.net]
今から実装してテストしてリリースしてその後の問い合わせ対応や運用に備えるのはスケジュール的に無理でしょ

3月末を死守する必要があるならIEモード1択
IEモードで時間稼ぎしてその間にサーバーサイドからDBアクセスする仕組みを作る

IEモードにするにしてもグループポリシーの変更・適用のテストや問い合わせ対応の準備を考えればそれでも時間が足りないくらい

769 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:07:07.17 ID:EAkcZvWPd.net]
>>753のコードにぶち当たった時点でEdgeというかブラウザ単体で実現できないことには気がついて欲しいものだが
仮にも2年はJSを勉強していたと言うなら

770 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:51:42.92 ID:M92RK9ru0.net]
JSONでダミー値をコメントのつもりで使ってたらエスケープできてない\でパースエラーになるデータができたりして使うのが怖くなった
やっぱコメントぐらいは定義必要だったなこれ
人間が手書きするものじゃないとしてもよく普及したもんだ

771 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:56:28.01 ID:M92RK9ru0.net]
>>753
そういうのってEdgeのIEモードに移行して終わりでしょ
周囲も期間的にその程度しか期待してないと思うけど

772 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:09:54.29 ID:M92RK9ru0.net]
ど素人だとIEモードが何なのかで3月は潰れるかもしれんけど一応
基本的には社内のADサーバでGPO管理してる奴にEdgeのIEモードのサイトリストに追加してもらう
これは君の担当以外にもIEモードのサイトは糞の山程あって既知の対応だからおそらく追加を依頼するだけでいいはず
うまくすればそれだけで作業が終わる可能性もある

773 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:35:09.37 ID:vtMigryt0.net]
>>757
コメントの書式があったって書式から逸脱する文字列を入れてパースエラー出す未来しか見えんわ。

774 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:46:06.22 ID:GXvqERSA0.net]
たぶんIEを前提とした目の前にあるコードを読み解いて作り直すより設計書用意したほうが早い

あるいはAIと二人三脚



775 名前:751 [2023/03/19(日) 19:54:47.83 ID:/GeuLHtL0.net]
みなさまありがとうございます
IEモードは1,2度調べて、いつまでこのモードがあるか分からないからと止めたのですが、
やはり時間稼ぎも考えるとこれしかなさそうです。
その間に根本的な解決策を探したいと思います。

なぜか年明けから会社のDX担当にされました。
と言いましたが、実はそれは嘘です。
年末にかけて社員が半分以上辞めて、残った人の中で一番詳しそうだったのが僕だったのです。
実は、サーバーサイドをいじらないといけないのだということは、薄々気づいていました。
でも、今動き続けているサーバーを触れる人が誰もいないのです。
僕も、SQLというものがある、という程度の知識しかないので、触る気にもなりません。

とりあえず夏のボーナスまで引っ張って、無理そうだったら自分も転職します。
今動いているものをうっかり壊したら、止められなくなりそうなので慎重にがんばります。
ありがとうございました。

776 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:55:19.68 ID:xryn/wmcd.net]
>>757
怖いも何もパーサーがきっちり仕事してる証拠じゃないの?
コメントを書きたいって需要に対してはJSON5やJSONCって派生規格があるから
それらを検討するべき

777 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 20:23:01.76 ID:M92RK9ru0.net]
何が理由かは置いといて技術を含めた社員がごっそり半数も辞めてる状況だとその会社から賞与もまともには出ないだろう
Edgeへの移行時期としてもかなり遅れてるし有給消化しつつ転職活動に専念した方がいいね

778 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 20:33:33.23 ID:M92RK9ru0.net]
>>763
規格はあれど既存の環境に適用できるものではないのがな
JSON

779 名前:として扱う前にJSONCとしてコメント抜く前処理でも通すか []
[ここ壊れてます]

780 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 22:37:02.99 ID:SC8SOdGAd.net]
>>765
パーサーにケチつけてるよりはその方が建設的でしょうよ

781 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 03:23:46.29 ID:iV2jn8x9a.net]
>>740
VSCode の拡張機能では、

open in browser では、ローカルファイルアクセスになる。
この場合、CORS など、ブラウザの色々な制限がある

file:///C:/Users/Owner/Documents/test/index.html

一方、Live Server では、
自分のPC 内にサーバーを立ててから、そこから配信されるので、テストしやすい

127.0.0.1:5500/test/index.html

>>753
そういうのは、Excel, VBA, Access とかじゃないの?
ベンチャー企業やプロのバックエンドは、Ruby on Rails だけど

782 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 04:02:42.23 ID:iV2jn8x9a.net]
>>745
Promise.all/allSettled とか?

783 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 19:47:12.99 ID:PTBUy+ct0.net]
chromeの拡張機能で、「ngWord.json」内のデータを「background.js」経由で「content_script.js」に格納しようとしていたのですが、上手くいきません。コードでおかしな点等あれば、ご教授頂けないでしょうか。

【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
// content_script.jsにデータを送信
chrome.runtime.sendMessage({ngWords: data});
});

【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords); // 受信したデータを表示
}
});

784 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 19:56:51.89 ID:hUotJVz90.net]
>>769
バックグラウンドからタブに送信するならchrome.tabs.sendMessageじゃないかな?



785 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 20:37:35.10 ID:PTBUy+ct0.net]
>>770
「タブ」というのは、「content_script.js」のことでしょうか?
だとすると「chrome.tabs.sendMessage(tabId: content_script.js, ngWords: data)のように書く感じでしょうか。

786 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 20:53:08.72 ID:mlA7fjwPM.net]
雑な方法としてはアクティブなタブに送ればいいんちゃう?

787 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:36:27.87 ID:hUotJVz90.net]
>>771
そうです。background から content_script に送信する場合はchrome.tabs.sndMessage だったと思いますよ
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sndMessage(tabs[0].id,{
ngWordsg:data
})
}})
というような感じで

788 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:40:33.20 ID:xjtq7KFo0.net]
最初にコンテンツスクリプト側から何かメッセージ送れば
バックグラウンド側のchrome.runtime.onmessage.addListenerのsender.tab.idでタブID取れるっしょ

789 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:49:32.93 ID:hUotJVz90.net]
それならtab.id必要なくてsendResponseで返せるんじゃないかな?

790 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:53:15.40 ID:PTBUy+ct0.net]
【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sendMessage(tabs[0].id,{ngWords:data})
});
};

【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords);
}
});

このように修正しましたが、上手く取得できないようです。

791 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:00:26.17 ID:hUotJVz90.net]
そもそもngWord.jsonの中身とれてますか?ローカルファイルならweb_accessible_resources書いてchrome.extension.getURLで取るんじゃないでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:04:38.80 ID:xjtq7KFo0.net]
もしかしてスクリプト本当にそれだけなの?
だとしたらcontent_script.js実行される前にbackground.js終わってそう

793 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:24:56.04 ID:PTBUy+ct0.net]
申し訳ありません、私の知識不足で、よく分かりません。もう一度格闘して、改めて質問させて頂きます。ご教授下さり、ありがとうございます。

794 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 23:58:23.18 ID:hUotJVz90.net]
>>779
めっちゃ適当なこと言ってましたわ
web_accessible_resourcesとchrome.extention.getURLは関係ないっぽいです

まずcontent_scriptが実行されるタイミングでbackgroundからタブにデータを送れるはずなくて
かといってcontent _scriptからメッセージ送ってbackgroundでfetchしたデータを送ろうとしてもセキュリティー的になのか送れない

なのでbackgroundでfetchしたjsonをchrome.storage.local.setで保存してcontent _scriptからchrome.storage.local.getで読み込むが正解っぽいです

暇だったんで...



795 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 04:01:46.37 ID:rEPYZ+tza.net]
漏れはプロジェクトを作って、index.ts に、TypeScript で以下を書いて、
npm/yarn, webpack, babel でビルドすれば、
import で、JSON ファイルやLodash も読み込めるけど

import WordData from "./word_data_tmp.json";
console.log( WordData.length )

const ary = [ ...Array( 5 ).keys( ) ]
// => [0, 1, ....,4]

import shuffle from 'lodash.shuffle';

console.log( shuffle( ary ) );
// => シャッフルされる

796 名前:デフォルトの名無しさん mailto:sage [2023/03/25(土) 14:02:02.15 ID:MQIuadNDM.net]
Next.jsでAPI Routesを使わないのは一般的でしょうか?

797 名前:デフォルトの名無しさん mailto:sage [2023/03/25(土) 18:19:14.13 ID:1/y/Yy4J0.net]
「一般的」のような主観的なものてはなく、客観的な定義が必要なのでは

798 名前:デフォルトの名無しさん (ワッチョイ eb5f-DdLV [14.8.104.32]) mailto:sage [2023/03/28(火) 20:12:53.97 ID:RtCr5Rz10.net]
プロミスって何?

あとfetchってasync、await使うのと.then使うのでどっちがいいの?

799 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 11:27:02.70 ID:NxiPtBQP0.net]
>>784
普通に調べれば出てきますよ
調べても調べてもよくわからんって質問をどうぞ

800 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 12:55:23.79 ID:y04hNuo/d.net]
消費者金融機関だよ

801 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 13:11:20.35 ID:6965UHWi0.net]
>>786
絶対に許せないのでxhrにしますね

802 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 02:32:51.01 ID:VdncSfH00.net]
メイン画面でボタンをクリックすると
別ウィンドウが起動し、ニュースサイトを表示するプログラムを組んでいます。

別ウィンドウが起動した時に
そのウィンドウが閉じられたのか、開かれたままであるのかを
メイン画面で判定するにはどういうコードを書けばよいでしょうか?

別ウィンドウでサイトが開かれている間は
1、2、3・・・とカウントし、閉じられると0を
メイン画面にjQueryでレンダリングしようとしています。

803 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 03:09:38.31 ID:29iJjOEC0.net]
>>788
window.closed はどう?

804 名前:デフォルトの名無しさん (ワッチョイ 1f8b-3uzD [211.5.157.105]) mailto:sage [2023/03/31(金) 11:32:39.06 ID:VdncSfH00.net]
>>789
ありがとうございます。
ちょっと試してみます。



805 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 22:40:30.72 ID:k6QZkjYI0.net]
先日(1週間くらい前)まで動いていたジャバスクリプトが動かなくなった。
ブラウザの不具合を疑って firefox、edge、さらに ie11 まで持ち出したらどれも動かない。
ウインドウズのセキュリティの締め上げかなと思って
スマホ(アンドロイド)で確認したがこっちも動いていない。
押し入れから昔のアイポッドタッチ(iOS9)を持ち出したが、やっぱ動かない。

こんなことってある?
アイポッドタッチなんてスクリプトが動いていたころとなに一つ変わっていないのに
なんでこの前は動いたのに今日は動かないんだ?
1年前のバックアップと差分比較してファイルが壊れていないことは確認した。
ちなみに自分がジャバスクリプトを作成するにあたって参考にしたスクリプトは
いまも普通に動いている。

806 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/24(月) 07:00:31.38 ID:z1nNn0o4H.net]
エラーも出て

807 名前:ネいのか?
まったく反応してないのならhtmlで読んでないんじゃね?
[]
[ここ壊れてます]

808 名前:デフォルトの名無しさん (スプッッ Sd73-8Xzj [1.75.215.168]) mailto:sage [2023/04/24(月) 08:37:00.30 ID:Z0B9bFh/d.net]
動いてた夢を見たんだ

809 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 09:21:53.70 ID:U4o0cUkO0.net]
>>791
ブラウザの不具合疑う前に
エラーログ出て無いか確認しろ
エラーログすら出てないならHTML側でちゃんと呼び出せてるか確認しろ

810 名前:デフォルトの名無しさん (ワッチョイ 2bbd-L85M [49.129.243.228]) mailto:sage [2023/04/24(月) 12:05:07.84 ID:VtgoOt7B0.net]
https の証明書が古い

811 名前:デフォルトの名無しさん (ワッチョイ 6910-bhMa [180.59.92.6]) mailto:sage [2023/04/24(月) 13:08:00.47 ID:MpRTlb310.net]
>>794
エラーログを見たらあっさり解決しました。
夜更けに一人で大騒ぎしてごめんなさい orz

いまブラウザの開発者ツールでジャバスクリプトのエラーが見られるんだね。
びっくりした。

原因はHTMLの削除した部分にスクリプトで動かす部分があって
動かすべきものがないから次の処理に行けずエラーになっていました。
スクリプトばかり見ていてHTMLは盲点でした・・・。

812 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 13:15:26.56 ID:3ESYAe520.net]
開発者ツール超便利だよね

813 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 13:22:29.25 ID:sSUQNn8cr.net]
まあそういうオチだろうなとは

アドバイスを求めるならhtmlを修正したことは伝えるようにしてほしいところ

814 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/25(火) 18:51:33.50 ID:/Hd1NuvtH.net]
解決したようでなによりなにより



815 名前:デフォルトの名無しさん (ワッチョイ eb7d-RykB [1.33.235.4]) mailto:sage [2023/04/26(水) 19:26:29.99 ID:lfd6T/fN0.net]
abehiroshi.la.coocan.jp/

この阿部さんのHPの左のフレームから「舞台出演」を取得したいんだけど、

const frame = await page.$('frame[name="left"]');
 const contentFrame = await frame.contentFrame();

こんな感じでcontentFrameを取得するところまでは上手く行くんだけど、

 const aElement = await contentFrame.$('body table.today tr:nth-child(8) td:nth-child(3) p a');

次の要素を取得する段階になるとnullになってしいます
どうすれば阿部さんの舞台出演を取得できますか?

816 名前:デフォルトの名無しさん (ワッチョイ d961-99Et [220.107.169.163]) mailto:sage [2023/04/26(水) 20:39:08.46 ID:UfBGheQ30.net]
>>800
.todayなんてclass付いてないぞい

817 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/26(水) 22:57:11.72 ID:Q5IzIMlUH.net]
それってJS?

818 名前:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89]) mailto:sage [2023/04/26(水) 23:08:17.75 ID:Q5IzIMlUH.net]
そもそもnullを取得してるってことは所望のオブジェクトが取得できていないってことよん?

819 名前:デフォルトの名無しさん (エムゾネ FF33-Nhf9 [49.106.174.76]) mailto:sage [2023/04/27(木) 13:47:05.09 ID:jYECG79eF.net]
>>800
それ、ChromeのDevツールとかで、Elementの検索にセレクター入力してちゃんとヒットする?

820 名前:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156]) mailto:sage [2023/04/29(土) 00:34:06.33 ID:FZLDUbkY0.net]
['apple', 'パイナップル', 'pineapple (パイナップル)', 'りんご', 'pineapple']

['apple', 'パイナップル | pineapple', 'りんご']
に別名ふくめて重複削除して整形したいんですがスマートな方法ないですか

821 名前:デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23]) mailto:sage [2023/04/29(土) 01:41:53.10 ID:bskwYySl0.net]
>>805
パイナップルの表記方法はどういう仕様なの?
スマートじゃない方法で実装できてるならそれを貼ってみたら?

822 名前:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156]) mailto:sage [2023/04/29(土) 01:58:50.79 ID:FZLDUbkY0.net]
>>806
別名がカッコで後ろに付く場合があったりなかったりをまとめたいんです
今は文字列に取り出して正規表現で割ってまた戻して~って頭悪くやってます

823 名前:デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23]) mailto:sage [2023/04/29(土) 02:08:42.66 ID:bskwYySl0.net]
>>807
元の配列には、同じ値が複数、たとえば 'りんご' が何個も入ることがある?

ただ何にしても、現状がどの程度頭悪いのか分からんけどそこそこ泥臭くなるんじゃないかなぁ

824 名前:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156]) mailto:sage [2023/04/29(土) 02:20:05.97 ID:FZLDUbkY0.net]
>>808
あります



825 名前:デフォルトの名無しさん mailto:sage [2023/04/29(土) 05:52:34.96 ID:q0/EY4lO0.net]
>>809
ちょっと面白そうだったので作ってみたけど、あんまりいい出来にはならなかった。
わざわざ見せるようなものじゃないんだけど、一応貼っとく。
アプローチとしては、単品アイテムまたは別名で括られた同一アイテム毎に配列実体を持たせて、重複排除しながらその実体に放り込んで最後に文字列化する。
複数の別名定義で 2つ以上の名前を括ったり、名前の登場順で連結するようにした。


https://i.imgur.com/tY8Yg78.gif

826 名前:デフォルトの名無しさん (ワッチョイ 1bbd-MgCS [119.240.43.251]) mailto:sage [2023/04/29(土) 06:04:20.63 ID:ZqMIj65v0.net]
あわわ、26-32行目は整理できた

const new-content = [];
alias_ref[item] = alias_content.length;

827 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/29(土) 20:12:37.30 ID:wJzxOo1h0.net]
JavaScriptでタイマー処理をしています。
指定した秒数(ここでは10秒)経過したらタイマーを停止する様にしていますが
タイマーが止まりません。助けてください、、、

$(document).ready(function(){
$("#id_div_test").click(function () {
setInterval(TestFunction , 1000);
});
});

var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(TestFunction);
}
}

828 名前:502 (ワッチョイ d501-nY3o [36.240.121.112]) mailto:sage [2023/04/29(土) 20:34:34.21 ID:ulzy/WI80.net]
>>812
使い方間違っとるな
そういうときはまずリファレンスを読め
https://developer.mozilla.org/ja/docs/Web/API/setInterval

829 名前:デフォルトの名無しさん (ブーイモ MM49-3F9Y [202.214.125.164]) mailto:sage [2023/04/29(土) 20:36:30.58 ID:WiY5v75xM.net]
clearIntervalの引数に入れるのはsetIntervalから帰ってくるnumber
型エラーでハマるのアホらしいしts使うか無理なら//@ts-checkをファイルの先頭に書いとけ

830 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/29(土) 20:54:08.29 ID:wJzxOo1h0.net]
>>814
わかりません。。。どう書けば良いでしょうか?

831 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/30(日) 00:03:19.23 ID:x92s4/Ng0.net]
>>814
できました!

832 名前:デフォルトの名無しさん mailto:sage [2023/05/07(日) 14:48:48.64 ID:NS1NVPz40.net]
>>812
こういうのはそのまんまChatGPTに聞けばヒントなり、回答、修正案なんかも返してくれ
る。
----
この問題は、`clearInterval`に渡す引数が誤っているために発生しています。`setInterval`に渡したのは `TestFunction`関数ですが、`clearInterval`に渡すのは `setInterval`が返すタイマーIDです。このタイマーIDは `setInterval`を呼び出すと返されます。

以下は修正されたコード例です。

$(document).ready(function(){
$("#id_div_test").click(function () {
var timerId = setInterval(TestFunction , 1000);
// タイマーIDを保持するために変数に代入する
});
});

var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(timerId); // 正しいタイマーIDを渡す
}
}

ここでは、`timerId`変数を`setInterval`の戻り値として宣言し、`clearInterval`に渡すようにしました。これにより、タイマーが正常に停止するはずです。

833 名前:デフォルトの名無しさん mailto:sage [2023/05/08(月) 05:12:47.92 ID:AmPaXWnYM.net]
>>817
ここいらんやんけ…

834 名前:デフォルトの名無しさん (ワッチョイ 52bd-F1Es [133.209.119.64]) mailto:sage [2023/05/08(月) 09:31:16.79 ID:nWGvwrRY0.net]
>>817
setIntetval してるスコープの timerId を clearInterval するスコープから参照できる?



835 名前:デフォルトの名無しさん (ワッチョイ 5b7c-01SL [122.212.18.110]) mailto:sage [2023/05/08(月) 19:39:25.41 ID:0kSPeCjv0.net]
エラーが出たらまた聞けば直してくれる
あとほ聞き方の問題だね

836 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/08(月) 22:29:23.94 ID:BI0XZhvO0.net]
>>817
え?そんな事までChatGPTできるの???すごくね??
どんなシステムになってんだろ。

837 名前:デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113]) mailto:sage [2023/05/08(月) 23:30:02.71 ID:ieW4qdsxM.net]
条件によってスクリプトを途中で止めさせたいんだけど三項演算子じゃreturnするしないを分けるのは無理?
if exitFlag return false

838 名前:デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45]) mailto:sage [2023/05/08(月) 23:46:59.68 ID:PuDhFqQc0.net]
>>822
多分無理だと思うけど、なんで if じゃいけないの?

839 名前:デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113]) mailto:sage [2023/05/08(月) 23:51:00.55 ID:ieW4qdsxM.net]
>>823
三項演算子の中で使ってるからなんか気持ち悪い

840 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 00:52:34.88 ID:eLWpr74i0.net]
f = (flag) => flag ? false : true;

console.log(f(true));
console.log(f(false));

841 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 00:52:45.73 ID:RQydgiqHd.net]
>>821
ChatGPTをプログラム用途で使ったこと無いなら一度つかってみると良いよ。
ググる手間がかなり少なくなる
もちろん、間違い返答の可能性もあるからそこら辺はうまく扱う必要があるけどね。
あとGitHub Copilotはもっとヤバいよ。プログラマーなら一度は使うべき

842 名前:デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45]) mailto:sage [2023/05/09(火) 01:40:34.46 ID:r9kkpYgp0.net]
OSS のソース読むときにも ChatGPT は便利だよ。
内部関数名とか聞いても何するものか教えてくれる。
この間 OpenSSL のソース読んでて助けられた。
暗号のコードなんて読んでもよくわからないしw

843 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/09(火) 07:51:33.95 ID:y5YEea020.net]
>>826
GitHub Copilot
そんなのもあるんですね。

844 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/09(火) 10:14:34.85 ID:y5YEea020.net]
ChatGPTでsqlでハマった点を質問してみたんだけど
ヤバイな。一瞬で分かり易く解説してくれた。

どんなプログラムを組んでるんだ。凄すぎる。



845 名前:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105]) mailto:sage [2023/05/09(火) 14:59:12.62 ID:y5YEea020.net]
chatGPTえぐいんですけど。

846 名前:デフォルトの名無しさん mailto:sage [2023/05/18(木) 17:50:03.04 ID:An6NATd90.net]
javascriptでctrl+Wでブラウザタブが落ちるのを無効にする方法はありますか?

847 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 06:51:40.61 ID:tIBpGAYNH.net]
それはJSの設定?Winの設定?

848 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 20:39:57.19 ID:85f2/18wa.net]
最近勉強してvarの何でもありな傍若無人さに気が付いた
例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入されるからエラーにならず混乱の素、
ブロックスコープ内で使うとその生成を無視するから混乱の素
なのでプロなのにES6以降の環境で未だにvar使ってる人って新人にも劣ると思った
ES6以降でEcmaから非推奨と言われてるのに未だにvar使わなければいけない理由ってある?
今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?

849 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 20:57:14.94 ID:PscArQu/0.net]
キモ

850 名前:デフォルトの名無しさん [2023/05/23(火) 22:34:28.22 ID:y7+F4Fx6M.net]
>>833
>例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入される
これいろいろ間違ってる

>未だにvar使わなければいけない理由ってある?
REPLで繰り返しコードブロックを実行したい場合なんかにvar使う
あとはブラウザ以外の環境でES3しか動かない環境とかね

>今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?
良いと思うけど君もそっち側に片足突っ込んでるから気をつけて

851 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 10:07:05.19 ID:qaFXRxUx0.net]
スコープの基本だね
レキシカルなのかパラメーターなのか
DOMをいじるとみんな参照になるし変数大切ね

852 名前:デフォルトの名無しさん mailto:sage [2023/05/24(水) 10:45:52.94 ID:R9+x876F0.net]
匿名イベントを削除する方法って無い?
ググりまくっても全く見当たらんから仕方ないのでElement.prototype.addEventListenerフックしてフィルタしてるんだけど非常に遠回りな事してる気がしてならない

853 名前:デフォルトの名無しさん [2023/05/24(水) 11:04:01.62 ID:CrZEaXEyM.net]
>>837
イベントリスナーへの参照を保持してないと
removeEventListenerは使えない
あとはAbortSignalを使う方法がある
MDNのaddEventListener辺りに全部書いてる

854 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 06:53:07.70 ID:djzVD0JU0.net]
くそ素人で申し訳ない
ブックマークレットでCookieを編集する時に有効期限も同時に編集したいのだけれど
どうしたらいいのだろうか

元々は
javascript:document.cookie=%22ipb_member_id=〇〇%22;document.cookie=%22ipb_pass_hash=〇〇%22;

って感じなのだけれど1日くらいしたらすぐ消えてしまう



855 名前:デフォルトの名無しさん (スップ Sd5a-9ehv [49.96.239.55]) mailto:sage [2023/05/25(木) 11:10:49.64 ID:vvIauVZOd.net]
どっかのRFCに載ってるはず

856 名前:デフォルトの名無しさん mailto:sage [2023/05/27(土) 14:04:26.57 ID:MkhutBump.net]
>>839

そいつは有効期限も一緒に設定しなきゃならんな。

javascript:(function(){
var date = new Date();
date.setDate(date.getDate() + 30); // 30日後に設定
document.cookie = "ipb_member_id=〇〇; expires=" + date.toUTCString() + "; path=/";
document.cookie = "ipb_pass_hash=〇〇; expires=" + date.toUTCString() + "; path=/";
})();

こんな感じでやってみ。
これでipb_member_idとipb_pass_hashが
30日間有効になるぜ。
ただし、ブラウザの設定やCookieの設定によってはJavaScriptから触れないこともあるから、
その辺は自己責任でな。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<355KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef