21/11/07 13:59:49.02 .net
自分のサイトに置いてあるjsonファイルを一緒に置いてある
javascriptから書き換える方法を知ってる人いますか
(URLが書き込めない)
のようなコードが出てきますが出来ません
Rubyとかはサイトが非対応みたいです
jsonの内容は{"a":1}だけで
aを2に変えるだけのコードを教えてください
言葉で説明されても全くわかりません
187:Name_Not_Found
21/11/07 14:01:00.20 .net
function WriteToFile(){
let hugastring = JSON.stringify(huga);
let blob = new Blob([hugastring],{type:"text/plan"});
let link = document.createElement('a');
link.href = UR.createObjectURL(blob);
link.download = '作ったファイル.json';
link.click();
}
188:Name_Not_Found
21/11/07 14:02:59.69 .net
これは何をするコードですか?
189:Name_Not_Found
21/11/07 14:26:59.38 .net
スクリプト初心者です。教えてください。
画像(25枚くらい)をページの端のほうに小さくスライドショー
でのせたいと思っています。
画像の出方はアクセスするたびランダムで
どの画像をクリックしても同じURLへ別windowで飛ぶようにしたいんです。
どうにかスライドショー&リンクまではできましたが
どうやっても別windowで開かないんです。
どうすればいいのでしょうか?
よろしくお願いします。
190:Name_Not_Found
21/11/07 16:04:02.22 .net
>>189
単にaタグで囲めばいいんじゃない?
JSでやる必要ないよ
191:Name_Not_Found
21/11/07 22:01:49.66 .net
>>190
ありがとうございます。
何度もソースコードを投稿しようとしているのですがはじかれます。
すみません。
192:Name_Not_Found
21/11/07 22:40:59.85 .net
スクリプトタグは、はじかれる。
<scr@ipt>
コードは、jsfiddle, paiza などへ書けばよい。
>>2-4
を参照
193:Name_Not_Found
21/11/07 23:01:26.08 .net
>>183
iframe にサイズ指定をすれば、小さく表示されるのでは?
194:Name_Not_Found
21/11/07 23:12:08.03 .net
>>186
ファイルの保存は、バックエンド(サーバー側)の言語で書く
例えば、Ruby on Rails なら、Rubyで書く。
Word Press なら、PHP で書く。
Node.js なら、JavaScript で書く
だから、まず、サーバーのフレームワークが何で、言語が何か、調べなければならない
それかサーバーに、ファイル保存用のAPI が作ってあって、
それを通して、保存できるようになっているとか
195:Name_Not_Found
21/11/08 19:57:21.50 .net
>>194
ありがとうございます
意味わからなくて無理そうなのでjsonに保存するのは諦めて
javascriptの変数をメールフォームに入れて送るのを試してみます
196:Name_Not_Found
21/11/16 00:44:39.92 .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のコードとほぼ同様の個別処理がBtnB~BtnXまで延々と続く感じ
197:Name_Not_Found
21/11/16 00:51:23.28 .net
イベント移譲
ボタンの親にイベントをつけてevent.targetを調べれば、押されたボタンが分かる
198:196
21/11/16 00:55:42.98 .net
求めてることのイメージ的には下記みたいな感じですがこの一番最初の行の書き方がわからないです
//何かわからんがボタンが押された!
ボタン〇〇addEventListener('click', () =>{
//何のボタンが押された?
クラス名=ボタン〇〇..className;
if(クラス名="BtnA"){
//その他処理
}
});
199:196
21/11/16 01:07:19.50 .net
>>197
調べてみるとこういうページが見つかったのですが、
URLリンク(alphasis.info)
これだと結局、各onClick処理を無数に書かないといけないように見えます
200:Name_Not_Found
21/11/16 02:07:21.30 .net
ボタンの外側のエレメントなりbodyなりにイベントリスナ仕込んでevent.target.nodeNameがBUTTONかどうかチェックすればいい
201:196
21/11/16 06:00:57.37 .net
>>200
ありがとうございます
このあたりのページの内容が教えて頂いたことに近いように思うのでまた明日やってみます
URLリンク(www.javadrive.jp)
202:Name_Not_Found
21/11/16 23:46:33.55 .net
class="BtnA BtnAll"
class="BtnB BtnAll"
みたいに、BtnAll で、すべてのボタンの処理をまとめれば?
jQuery で書けば、
<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>
$( ".BtnAll" ).on( 'click', function ( ) {
console.log( $(this).prop( 'value' ) )
} );
203:202
21/11/17 00:07:34.96 .net
>>202
では、event listener の数が多くなるのか。
それなら、外側・親に、イベントを付けて、親でイベントをキャッチする
jQuery で書けば、
<div id="btn-wrap">
<button class="BtnA" value="1">A-1</button>
<button class="BtnA" value="2">A-2</button>
<button class="BtnB" value="3">B-3</button>
</div>
$( '#btn-wrap' ).on( 'click', function ( event ) {
console.log( $( event.target ).prop( 'value' ) )
} );
204:Name_Not_Found
21/11/22 15:09:58.61 .net
この種の質問は何度もされてると思いますが prototypeを使った継承について教えてください
function Base(x=0,y=0) { [this.x, this.y] = [x, y] }
Base.prototype.hello = function () { console.log("hello:"+ this.x +"," + this.y) }
// パターン 1
function Derived(z=0) { Base.call(this,10,20); this.z = z }
Derived.prototype = Object.create(Base.prototype); // → Base {}
let obj = new Derived(30); // → { x: 10, y: 20, z: 30 }
obj.hello(); // → hello:10,20
obj.__proto__.__proto__.hello === Base.prototype.hello; // → true
// パターン 2
Derived.prototype = {...Base.prototype}; // → { hello: [Function (anonymous)] }
obj = new Derived(30); // → { x: 10, y: 20, z: 30 }
obj.hello(); // → hello:10,20
obj.__proto__.hello === Base.prototype.hello; // → true
obj.__proto__.__proto__.hello === Base.prototype.hello; // → false
よく紹介されているパターン 1 だと hello メソッドへの参照は 間に挟まった Baseインスタンスの分だけ遠くなります.
パフォーマンス的にはパターン 2 の方が良さそうに感じますが何か問題があるでしょうか?
205:Name_Not_Found
21/11/22 17:27:32.88 .net
スプレッド構文でコピーしちゃったらそのあとでBase.prototypeに何かしても反映されないし
getter/setter/列挙不可能プロパティあたりで問題があるかな
206:Name_Not_Found
21/11/22 17:49:48.60 .net
>>205 ありがとうございます
> あとでBase.prototypeに何かしても反映されない
ああ...確かにそうですね。
207:Name_Not_Found
21/11/23 11:38:08.30 .net
ES2015 から、class 構文が使えるから、
そういう、昔の書き方をしなくても良い
208:Name_Not_Found
21/11/23 12:58:06.42 .net
せやなclass構文よりオブジェクトリテラルのスプレッド構文の方が新しいし
209:Name_Not_Found
22/01/20 18:22:24.83 .net
ぷよぷよプラグラミングの質問なんですが
URLリンク(puyo.sega.jp)
p8の18行あたり initialize ()の中でイベントリスナーでキー操作呼び出してるのですが
initialize ()って一回しか読まないものだと思うのですがどこでキーイベント取得するのでしょうか
一般的なプログラムだとメインの動いてるところで取得するイメージなんですが?
static initialize () {
// キーボードの入力を確認する
this.keyStatus = {
right: false,
left: false,
up: false,
down: false
};
// ブラウザのキーボードの入力を取得するイベントリスナを登録する
document.addEventListener('keydown', (e) => {
// キーボードが押された場合
switch(e.keyCode) {
case 37: // 左向きキー
this.keyStatus.left = true;
e.preventDefault(); return false;
case 38: // 上向きキー
this.keyStatus.up = true;
e.preventDefault(); return false;
case 39: // 右向きキー
this.keyStatus.right = true;
e.preventDefault(); return false;
case 40: // 下向きキー
this.keyStatus.down = true;
e.preventDefault(); return false;
}
});
210:Name_Not_Found
22/01/24 18:28:14.40 .net
>>209
loop関数の最後に非同期のrAF(loop)があるから、その1/60秒の隙間でブラウザからキー入力を取得してんのかね。
211:Name_Not_Found
22/02/03 09:16:04.89 xW83/srj.net
nodejsでwebスクレイピングアプリを作っています
<body topicId="2557157" state="old">
こういうhtmlタグがあって、stateのvalueを取りたいのですが
Document.getElementsByTagName("body")[0].state
こうしてみたのですがundefinedとなります
取得する方法はないでしょうか
212:Name_Not_Found
22/02/03 13:05:19.10 .net
document.querySelector('body').getAttribute(’state’)
213:Name_Not_Found
22/02/03 13:16:12.01 .net
>>212
できました!ありがとうございます!
214:Name_Not_Found
22/02/06 13:35:18.15 .net
>>209
document.addEventListener('keydown', (e) => {
で、何回もイベント登録されたら、大変。
イベント登録は1回だけでよい
登録しておけば、keydown される度に処理される
215:Name_Not_Found
22/02/16 11:41:08.50 .net
ヘイ、ジャックス!で括ったら辛せに慣れるかも
216:Name_Not_Found
22/02/25 00:38:48.27 CkkK8ZAi.net
見てる人いるかわかりませんが
ellipseでcanvasに楕円を描写したあと中央の部分をくり抜いて透明にしたいです
ellipseで緑色に描写した後arcで中心に円を描いてclipしても円の線が切り抜かれるだけで円形の穴はできませんでした。
217:Name_Not_Found
22/02/25 17:01:23.34 .net
「html canvas 図形 切り抜き」などで検索すれば?
218:Name_Not_Found
22/03/03 20:47:13.54 FU1IYJw+.net
スレ間違えたので、こちらで出直します
拠ない事情でフロントエンドを作ってるんだけど
<a><img></a>でaにaddEventListener(‘click’)したのに、飛んできたイベントのtargetプロパティがimgになってる
aを探して遡るのはなんか負けの気がする
aにイベント飛ばさせるテクはありますか?
219:Name_Not_Found
22/03/03 21:08:25.47 .net
>>218
a要素にaddEventListenerしたんならcurrentTarget
URLリンク(developer.mozilla.org)
220:Name_Not_Found
22/03/04 02:30:11.83 .net
jQuery では、外側・親にイベントを付けて、親で、子のイベントをキャッチできる。
event.target で、子のvalue の値、1,2,3 を取得できる
<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 ) {
const value = $( event.target ).prop( 'value' )
console.log( value )
alert( value )
} );
221:Name_Not_Found
22/03/04 02:38:11.01 .net
「js event.target vs event.currenttarget」で検索してみれば?
222:Name_Not_Found
22/03/04 12:04:46.12 vu0iDZXJ.net
ありがとう皆さん
currentTargetで目的を果たせました
223:Name_Not_Found
22/03/06 14:04:14.27 nmfY1egB.net
自分のサイトにあるフォーム
↓①
googleフォーム
↓②
googleスプレッドシート
と情報を渡す時、①の部分はどのように実装すると良いでしょうか
・自分のサイトの「送信」ボタンを押すと、submitで送信する
・自分のサイトの「送信」ボタンをaタグにし、hrefをjsで編集する
①の部分はここを参考にしています
URLリンク(stackoverflow.com)
224:Name_Not_Found
22/03/06 22:36:58.30 .net
aタグは、get しか出来ないでしょ?
Ruby on Rails では、post なども出来るようにしているけど
[Rails]aタグでも「data-method="delete"」を設定すればlink_toと同じ挙動
URLリンク(qiita.com)
form = $('<form method="post" action="' + href + '"></form>'),
aタグをクリックされたら、見えないフォームを作って、post 送信している
225:Name_Not_Found
22/03/06 22:48:29.21 .net
>>224
は?rubyとかもう化石じゃないですか。使いませんよ
postするならsubmitすればいいだけだし。rubyってこんなアホしか使ってないんですか?
226:Name_Not_Found
22/03/06 22:49:42.83 nmfY1egB.net
すいません、あまりの気持ち悪さに口が悪くなってしまいました
あとID隠してしまいましたが>>225は私です
227:Name_Not_Found
22/03/07 11:55:01.12 .net
>>223
普通に前者で良いよ。
むしろ後者にする必然性が何一つない
もし合計を出す、税込みにするなどでどうしても加工したいなら、後者はありえる
あとこのrubyキチガイはrubyという言語を終わらせるために活動しているので、相手しなくていいぞ
228:Name_Not_Found
22/03/07 15:10:53.63 .net
うーむ、めちゃはまってしまってる
1:スプレッドシートのE列を配列 arrColWork に格納
range = workReportSheet.getRange(1,5,150);
arrColwork =range.getValues();
2:arrColWorkから重複排除した要素だけをarrColに格納
arrCol = arrColWork.filter(function(value, index, self){return self.indexOf(value) === index;});
↑
上記1→2の流れやりたいんだけど 2 がうまくいかない
重複排除されずに全件arrColに格納されてしまう…
テストケースとしてE列の先頭行(1行)と最終行(150行)に"野口"と入力
2行~149行には"田中"を入力したもので試したが全部出力されてしまってる
1の結果を Logger.log(arrColwork); で出力したら正常にE列の1行目から150行目まで入力した値がきちんと配列に格納できてる
2の結果を Logger.log(value + ":" + index + ":" + self.indexOf(value)); で出力したら
valueはきちんと150件分入力したものが入ってるが、index と self.indexOf(value) が同じ値になってしまってて
全部 True になってる self.indexOf(value) が機能してない?
原因わかるやつおる??
229:Name_Not_Found
22/03/07 15:58:20.23 .net
valueがオブジェクトだったみたいな振る舞いですね
230:Name_Not_Found
22/03/07 16:23:09.72 .net
試してたら1の部分を arrColwork = ["野口","野口","田中","橋本","田中","小林","入間"]; のように
ソースコード内で配列の中身を指定するように置き換えたら2のコードのまんまできちんと重複を排除できた
スプレッドシートのE列の値を配列に格納するあたりで何かひっかかってる??
231:Name_Not_Found
22/03/07 16:28:12.67 .net
うーむ、getValues()で取得したものは1列分であっても二次元配列で取得されてるってことかな
んでもって、indexOf() は一次元配列にしか使えない…
232:Name_Not_Found
22/03/07 16:29:11.92 .net
スプレッドシートの1列分のデータを一次元配列で取得する方法ってないのかな??
二次元配列で取得したものをforで回して一次元配列に格納しなおすしかないんだとしたらめんどい
233:Name_Not_Found
22/03/07 16:36:09.66 ua+lBOoP.net
A. URLリンク(www.example.com) (有料SSL)
のフォームから
B. URLリンク(abc.example.com) (無料SSL)
へPOSTでデータを渡していました。
Aのフォームでsubmitボタンに対し、
リロードさせないようにpreventDefault()を入れてBに渡していました。
Aの有料SSLを無料SSLに変えて同時にwww無しのドメインに正規化しました。
するとpreventDefault()を入れるとデータが飛ばなくなってしまいました。
結局submitボタンをtype=buttonに変えて、
JavaScriptでsubmit()することで飛ばせるようには鳴りました。
2つ(有料SSLとwww外し)を同時にやってしまったのですが、
なぜAからBへダメになってしまったのでしょうか?
234:Name_Not_Found
22/03/21 15:15:21.43 EwLxpvLS.net
お前ら和歌山県出身の下村拓郎様(35歳独身、元自衛隊)をご存知か、この方は将来素晴しい人物になるから覚えておいて損はないぞ
235:Name_Not_Found
22/03/21 16:54:18.28 .net
javascript素の実装で
fetchした結果をreturnしたいんだけど毎度おなじみ非同期の沼に嵌ってよくわからない
これreturn書いても書かなくてもpromise返ってるんだけど
promiseから値を取り出すにはどうすればよいの?
みんなどうやってるのか聞きたいな
毎度コールバックでfetchとかコード大変なことになるし
共通jsに別関数でgetListみたいな名前でAPI問い合わせしてjson返すようなデザパタは
Javascriptではご法度なの?
236:Name_Not_Found
22/03/23 04:54:11.57 .net
javascriptではというかGUIが絡むコーディングではどの言語でもご法度だよ
シングルスレッドならね
言語(&環境)によってそれをマルチスレッドで解決するか非同期で解決するかというだけ
とはいえやりたければjavascript(&ブラウザ)でそういう同期処理的なふうにできなくもないよ
当然メインスレッドブロックするけどね
おとなしくasync/await勉強すべきだと思うけど
MDN読みながら手を動かして1~2時間もあればだいたい分かると思うけどその程度の手間も惜しいの?
237:Name_Not_Found
22/03/23 06:14:31.61 .net
ちんちんシュッ!シュッ!シュッ!
238:Name_Not_Found
22/03/23 12:42:18.82 .net
Callback 地獄 → Promise 地獄 → async/await
JavaScript には、こういう変遷の歴史がある。
Promise は、jQuery の時代の技術
239:Name_Not_Found
22/03/28 21:12:24.23 .net
aタグを全て新規タブで開きたいと思い、
以下のコードを書いてみたのですが
Uncaught TypeError: foo.forEach is not a function
at <anonymous>:2:5
というエラーになりました
foreachの書き方が間違っているのでしょうか
それとも、fooに対してはforeachが使えないのでしょうか?
var foo = document.getElementsByTagName("a")
foo.forEach(function(bar){
window.open(bar.getAttribute);
});
240:Name_Not_Found
22/03/28 22:56:41.36 .net
>>239
> それとも、fooに対してはforeachが使えないのでしょうか?
これが正解、fooは配列じゃなくてHTMLCollection
URLリンク(developer.mozilla.org)
241:Name_Not_Found
22/03/28 23:17:02.61 .net
>>239
querySelectorAllならIE以外でforEachが使えるけど
今時のブラウザはブラクラ防止で一つの処理でwindow.openは1回しか動かないものが多いよ
242:Name_Not_Found
22/04/02 11:02:19.53 .net
15年ぐらい前のlightbox環境は毎秒5フレームぐらいのカクカクした感じなんだけど
スムーズにするにはどこを触ればいい?
lightbox2はうまく動かなかった
なんとかlightbox.jsのパラメータを触って実現できたらいいんだけど
243:Name_Not_Found
22/04/07 21:02:43.08 .net
cssを直で書く
jsでアニメーションはカクカクになる
244:Name_Not_Found
22/04/09 05:38:43.91 .net
javascriptでブラウザの外に画像を表示したり、動かしたりする事ってできますか?
245:Name_Not_Found
22/04/09 06:34:14.46 .net
できないよ
246:Name_Not_Found
22/04/09 15:49:49.88 .net
条件を後出しせず、書かれた通りの質問なら、できるよ
247:Name_Not_Found
22/04/10 05:44:51.10 .net
>>246
URLとか忘れたんですけど、以前ブラウザのボタンを押すとブラウザの後ろから画像がニョキッって横に飛び出る動画見た事あるんですよね
アレってjavascriptなのかなーって疑問を抱いてました
248:Name_Not_Found
22/04/22 15:57:04.46 CYTDFVnn.net
test.jsの中で
(function(){
var a = 1;
})();
と変数を宣言しましたがchromeのコンソールでこのaを取得するにはどうすればよいのでしょうか?
249:Name_Not_Found
22/04/22 16:38:41.57 .net
breakpoint入れてその関数実行時にスコープの中に入らないと無理じゃないかな
スクレイピング用途ならhttp proxyかましてスクリプトを変更して外部からアクセスできる変数にする
250:Name_Not_Found
22/04/22 22:33:33 .net
>>248
無名関数は、
var a = 1;
が他に影響しないようにするための便利な書き方なんだ
その中見を無理に使おうとすると
var a = 2;
(function(){
a = 1;
})();
console.log(a)
のようなアホみたいな書き方になる
aを使いたいなら、
a = 1;
だけで良い
251:Name_Not_Found
22/04/23 04:13:46 .net
>>249 >>250
ありがとうございます。
すごい分かり易かったです。
252:Name_Not_Found
22/04/29 18:35:35.70 .net
今だと非同期関数を作るときはasyncを付けます。
まだasyncが登場してない時ってどうやって自作の非同期関数を作っていたのでしょうか。
253:Name_Not_Found
22/06/04 19:32:18.50 .net
どなたか教えてください。
<body>
<script>
var str = document.getElementById{"test").innerHTML;
str = str.replace(“やま”, “ほし”);
document.getElementById("test").innerHTML = str;
</script>
<div id=“test”>
<p>うみ</p>
<p>やま</p>
</div>
</body>
としてもブラウザーには
うみ
やま
と表示されてしまいます。
どこか間違っているのでしょうか?
その場合どこを直せばいいでしょうか。
よろしくお願いします。
254:Name_Not_Found
22/06/04 21:56:17.30 .net
釣られないぞ
255:Name_Not_Found
22/06/04 21:58:29.74 .net
>>253
ダブルクォートやカッコが間違ってる
scriptタグを</div>より後に
256:Name_Not_Found
22/06/04 22:01:16.83 .net
DOMがreadyになってから実行しろって話じゃないの?
257:Name_Not_Found
22/06/04 22:15:41.08 .net
みなさんレスありがとう。
()と”を’に置き換えて下記のようにしてみました
<div id=“test”>
<p>うみ</p>
<p >やま</p>
</div>
<script>
var str = document.getElementById('test').innerHTML;
str = str.replaceAll('うみ', 'ほし');
document.getElementById('test').innerHTML = str;
</script>
しかしブラウザでは うみ やま と表示され ほし やま になってくれません。
258:Name_Not_Found
22/06/04 22:44:00.21 .net
シングルクォートにしろという事ではなく全角ダブルクォートなのが間違い
<div id="test">
259:Name_Not_Found
22/06/05 07:14:56.13 .net
>>258
半角だと思うのですがこれじゃだめなんですね。
260:Name_Not_Found
22/06/05 07:20:42.56 .net
お騒がせしています
<div id="test">
<p>うみ</p>
<p >やま</p>
</div>
<script>
var str = document.getElementById("test").innerHTML;
str = str.replaceAll("うみ", "ほし");
document.getElementById("test").innerHTML = str;
</script>
このように書き換えましたがはやり うみ が やま に変わりません。
どこかどのようにだめなのかわかりませんか?
261:Name_Not_Found
22/06/05 07:25:18 .net
すみません。混乱していて。
うまく表示されていたようです。
初歩的な事にレスをいただいてみなさんありがとうございました。
感謝します。
262:Name_Not_Found
22/06/05 16:32:21 GSVgB4j6.net
const express = require('express');
const server = express();
と書いた場合と、express(); の前に new を付けて、
const express = require('express');
const server = new express();
と書いた場合、何が違うのでしょうか?
同じように動作しているように見えます。
263:Name_Not_Found
22/07/21 18:28:05 bVEASdty.net
こういう鍵盤をイメージしたボタンが複数60Keyほどあって、鍵盤のキーをクリックしたらイベントを開始したい。
<span class="white-key" data-key="90" data-note="1c"><i>ド</i></span>
<span class="white-key" data-key="88" data-note="1d"><i>レ</i></span>
<span class="white-key" data-key="67" data-note="1e"><i>ミ</i></span>
.
.
.
しかし、id属性がないので、
let button = document.getElementById('xxx');
button.addEventListener('click', butotnClick);
とは記述できない。
jQueryや、Reactや、Vue.jsなどは使わず記述する方法ありますか?
264:Name_Not_Found
22/07/21 19:17:04.35 .net
要素を取得する方法の問題?
id属性がなくてもwhite-keyクラスがついてるってわかってるなら
URLリンク(developer.mozilla.org)
を使えば要素の一覧が取得できる
265:Name_Not_Found
22/07/21 19:17:59.47 .net
>>263
classなりなんなり共通してる他の属性を使えばいい
document.querySelectorAll(".white-key, .black-key").forEach(elem => elem.addEventListener("click", buttonClick));
266:Name_Not_Found
22/07/21 19:28:53.96 .net
>>264,>>265
ありがとうございます。やってみます。この方法なら、keyごと(ボタンごと)に、
addEventListener()
つくらなくていいのかもしれないですね。
60個も、addEventListener()つくるのは面倒だなと思ってました。
267:Name_Not_Found
22/07/21 19:31:46.38 .net
あ。いや。ボタン毎にaddEventListener()記述しないと、同じ音が出てしまうな。。
268:Name_Not_Found
22/07/21 19:42:44.93 .net
繰り返しaddEventListenerでイベントハンドラ設定するのが嫌なら、
適当な親要素にイベントハンドラつけてそのイベントハンドラ内で
let button = event.target.closest(".white-key");
ってやればいいんじゃないかな
URLリンク(developer.mozilla.org)
269:Name_Not_Found
22/07/21 23:38:14 .net
こんな感じかね
URLリンク(jsfiddle.net)
270:Name_Not_Found
22/07/22 08:54:33.42 LPjEgNsv.net
フリーランス向けエージェント「クラウドテック」会員数8万人突破
~働きやすい環境構築のため、単価向上・全年齢の活躍の場創出・
地方企業のDX推進の取り組みを強化します~
フリーランスエンジニア専門の案件一括検索サイト「フリーランススタート」、
累計掲載案件数25万件突破!リモートワークの累計掲載案件数35,000件突破!
新規人材の80%がフルリモート希望! IT人材市況動向レポート2021年12月版を公開
人口移動報告 家賃高い、首都圏脱出 「コロナ禍、仕事フルリモート」
クラウドテック、地方企業向け『クラウドテックDX』を開始、
7万人を超えるDX人材が、地方の非IT企業のDX推進を支援
新潟県、移住してきたテレワーカー/フリーランスに最大50万円を支給
テレワークの一般化により、11月にはテレワーク可能案件83.7%へと増加。
2021年、フリーランスのトレンドは「移住&テレワーク」と予測
271:Name_Not_Found
22/07/22 15:02:06.74 .net
jQuery で、外側・親にイベントを付けて、親で子のイベントをキャッチする。
$( event.target )
<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>
$( function ( ) {
// 外側・親にイベントを付けて、親で子のイベントをキャッチする
$( '#btn-wrap' ).on( 'click', function ( event ) {
const value = $( event.target ).prop( 'value' )
console.log( value )
} );
これで、1,2,3 などが出力される
272:Name_Not_Found
22/07/22 20:52:23.24 .net
なんでjQuery?
273:Name_Not_Found
22/07/22 21:45:39.09 .net
>268
>269
>271もかな。
ありがとうございます。
>269の発想はJavaScriptに慣れてないとできそうじゃないねえ。
勉強になりました。参考にさせていただきます。
274:271
22/07/22 23:10:42.75 .net
JavaScript は難しすぎる。
バグってばかりで、アホらしい
漏れは、Ruby, jQuery ぐらいしか書けない
275:Name_Not_Found
22/07/23 00:06:45.72 .net
言語とライブラリを混同してる時点で理解不足としか
276:Name_Not_Found
22/07/23 03:29:16.41 FClyRvyS.net
疑似的に、sablimeTextとか、VisualStudioCodeを模して
ソースコードに対して、キーワード毎に色付けるような、
javascriptのパッケージてないですか?
277:Name_Not_Found
22/07/23 04:01:34 .net
すいません。わかりづらいので修正。
ソースコードに対して×
htmlに書かれた、スニペットに対して〇
278:Name_Not_Found
22/07/23 13:09:05.45 .net
こういうの?
URLリンク(qiita.com)
279:Name_Not_Found
22/07/23 14:30:30.90 .net
ありがとうございます。まさにそれです。
280:Name_Not_Found
22/07/27 14:20:46.26 4QcDaVi1.net
これで音がなるのですが、zingle.mp3は10秒程度の長さです。
3秒ぐらいで音をストップさせるにはどうすればいいですか?
const sound_c = new Audio('sound/zingle.mp3');
sound_c .play();
281:Name_Not_Found
22/07/27 14:34:05.59 .net
setTimeout()で解決しました。おさわがせしました。
282:Name_Not_Found
22/08/03 18:48:40 Nj6BOTMG.net
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="URLリンク(code.jquery.com)></script>
<title>サンプル</title>
</head>
<body>
<input type="button" value="再生" id="button">
<script>
if ($('#button').val() === "再生"){
$('#button').click(function() {
console.log($('#button').val());
console.log($('#button').val() === "再生");
console.log("再生をはじめました。");
$('#button').val('停止');
});
}
</script>
</body>
</html>
今すっごくハマっているところですが、input要素のvalue値を変化させると、ボタンをクリックさせないように設定しているのですが、
そんなの関係なしに、ボタンがクリックできてしまいます。
これは、どういった理由で変な処理が可能になっているのでしょうか?今後ハマらないためにどのような注意をすればよいでしょうか?
283:Name_Not_Found
22/08/03 20:01:54.34 Nj6BOTMG.net
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="URLリンク(code.jquery.com)></script>
<title>サンプル</title>
</head>
<body>
<input type="button" value="再生" id="button">
<script>
var playing_flag = false;
if (playing_flag === false){
$('#button').click(function() {
console.log('ボタンが押された');
console.log(playing_flag);
$('#button').val('演奏中止');
playing_flag = true;
console.log(playing_flag);
// run();
});
}else{
console.log(playing_flag);
// reset();
}
</script>
</body>
</html>
flag用の変数を使ってもダメだった。どこで躓いているんだろ。。
284:Name_Not_Found
22/08/03 20:12:43.40 .net
こういうこと?
ボタンを無効化させる意図がよく分からんけど
disableかstyleのpointer-eventかければいいだけかと
URLリンク(i.imgur.com)
285:Name_Not_Found
22/08/03 20:17:43.28 Nj6BOTMG.net
もちろん、もともとの目的は無効化なんだけど。
それより、
if(false){
実行A
}
の状態なのに、実行Aが実行されているのが気になって。
286:Name_Not_Found
22/08/03 20:22:18.94 .net
false === false は真だろ
287:Name_Not_Found
22/08/03 20:23:51.02 Nj6BOTMG.net
お。
288:Name_Not_Found
22/08/03 20:27:15.89 .net
そっかー。ありがとう。これに2時間悩んでたww
289:Name_Not_Found
22/08/03 20:32:11.88 Nj6BOTMG.net
いや。解決してない。
290:Name_Not_Found
22/08/03 20:36:38.79 Nj6BOTMG.net
<script>
var playing_flag = false;
if (playing_flag === false){
$('#button').click(function() {
console.log('ボタンが押された');
console.log(playing_flag);
$('#button').val('演奏中止');
playing_flag = true;
console.log(playing_flag);
// run();
});
}else{
console.log(playing_flag);
console.log('2回目はこっちが押されるはずでは?');
// reset();
}
</script>
1回目のクリックは、if文の実行で問題ないのだけど。
2回目のクリックは、else文を実行するのでは?
291:Name_Not_Found
22/08/03 20:48:32.41 Nj6BOTMG.net
<input type="button" value="再生" id="button">
<script>
var playing_flag = false;
const btn = document.getElementById("button");
var run = () => {
console.log(playing_flag);
console.log("再生中");
playing_flag = true;
};
var reset = () => {
console.log(playing_flag);
console.log("停止");
playing_flag = true;
};
if (playing_flag === false) {
btn.addEventListener("click", run, false);
} else {
btn.addEventListener("click", reset, false);
}
</script>
jQueryが悪いのかと思って、イベントリスナーでクリックしてみたけど。
やっぱり2回目のクリックでelse文を実行しない。
なんか、おれ勘違いしてる????
292:Name_Not_Found
22/08/03 20:52:18.36 Nj6BOTMG.net
ちょっと訂正。
var reset = () => {
console.log(playing_flag);
console.log("停止");
playing_flag = true;
};
↓
var reset = () => {
console.log(playing_flag);
console.log("停止");
playing_flag = false;
};
293:Name_Not_Found
22/08/03 20:53:44.88 .net
その2回通ると思い込んでるif文はイベントハンドラでも何でもないんだからボタン押される前の1回しか通らないよ
294:Name_Not_Found
22/08/03 21:00:45.56 Nj6BOTMG.net
え。意味がよくわからない。イベントハンドラじゃないから、1回しかとおらない。。??
295:Name_Not_Found
22/08/03 21:13:35.85 Nj6BOTMG.net
ずっとコードを眺めてみたら、
>>290のコードは確におかしいことは分かってきた気がする。
296:Name_Not_Found
22/08/03 21:37:07.14 .net
>>291,292のコードも、イベントリスナー使ってますけど。
2回クリックしてもelse文にはならず、if文を2回実行しているのでしょうか?
297:Name_Not_Found
22/08/03 21:56:45.64 Nj6BOTMG.net
playing_flag = false;
var run = () => {
if(playing_flag === false){
console.log(playing_flag);
console.log("再生中");
playing_flag = true;
}else{
reset();
}
};
var reset = () => {
console.log(playing_flag);
console.log("停止");
playing_flag = false;
};
const btn = document.getElementById("button");
btn.addEventListener("click", run, false);
納得いかないけど、>>291,292を上のように変えたら、
期待した通りに動いた。
ボタンの状態に、フラグをつけて、実行に条件を入れるときは注意しないと
いけんのかもなあ。
298:Name_Not_Found
22/08/03 22:04:04.33 .net
納得いかない、ねえ?
開発者ツールでどういう順番でどの行の処理がされるか確認したらいいんじゃないかな
299:Name_Not_Found
22/08/03 22:07:55.84 Nj6BOTMG.net
あ。そうですね。アドバイスありがとうございます。
300:Name_Not_Found
22/08/03 22:12:13.92 .net
>>297
むしろ、>>291でフラグ立ててイベントハンドラ振り分けてるのが最高に意味不明なんだが
イベント駆動について勉強してみたら?
301:Name_Not_Found
22/08/03 22:42:39.79 Nj6BOTMG.net
よくわかってなかったようだ。
下の認識でOKですか?雑ですが。。
「Javascriptはブラウザが開いたとき、上の行から下の行へ基本一回だけ実行する。
しかし、イベントが起きたら例外的にその箇所を実行する。」
302:Name_Not_Found
22/08/04 02:45:36.83 .net
>>301
HTMLスクリプト要素のdefer属性(DOMContentLoadedからの実行)とasync属性(HTMLScriptElement#onloadからの非同期実行)
303:Name_Not_Found
22/08/04 03:10:03.94 jGEKnkMs.net
>>302ありがとうございます。詳しく調べてみます。
>>291,292を
開発者モードでトレースしてみたのですけど。
ボタンをクリックすると、直前の条件の評価をせずに、
いきなりrun()の中を実行はじめました。
カレントの変数を無視して、初回時の条件が適応されているようです。
多分。疑問に思う方が変なのかもしれませんが、これは慣れですかね。。
304:Name_Not_Found
22/08/04 03:13:38.61 .net
例えば、HTMLスクリプト要素にasync属性が指定してあると、次の二つは共に実行されない。
new Promise(addEventListener.bind(this, 'DOMContentLoaded')).then(e => console.log(e));
await new Promise(addEventListener.bind(this, 'DOMContentLoaded')).then(e => console.log(e));
例えば、次は1回クリックしたら次は無い。
new Promise(document.addEventListener.bind(document, 'click')).then(e => console.log(e));
>>301
これら当たり前過ぎる例を説明できますか?
今のJSは巨大なフレームワーク、1997年レベルから2022年レベルにするの大変だろうけど頑張ってね。
305:Name_Not_Found
22/08/04 23:22:36.77 .net
>>297
>var playing_flag = false;
>if (playing_flag === false){ 処理 }
playing_flag が真偽値・bool 型なら、単にこう書けば?
if ( playing_flag )
基本、boolを比較してはならない。
すでに、boolになっているから
306:Name_Not_Found
22/08/04 23:38:01.22 .net
jQuery のon で、任意の要素に、任意のイベントを追加できる
<button id="btn_1" class="btn btn-primary">
<span class="show-when-enabled">送信</span>
<span class="show-when-disabled">送信中...</span>
</button>
<button id="btn_2">送信ボタンをenable にする</button>
<style>
button .show-when-enabled { display: initial; }
button[disabled] .show-when-enabled { display: none; }
button .show-when-disabled { display: none; }
button[disabled] .show-when-disabled { display: initial; }
</style>
$( function ( ) {
$( '#btn_1' ).on( 'click', function ( event ) {
$( this ).prop( 'disabled', true ); // disable にする
} );
$( '#btn_2' ).on( 'click', function ( event ) {
$( '#btn_1' ).prop( 'disabled', false ); // enable にする
} );
} );
307:Name_Not_Found
22/08/05 02:46:29.55 .net
もうjqueryスレと統合すべきだと思うの
両者の関連スレ合わせても勢い1すらないんだし
308:Name_Not_Found
22/08/05 07:46:34.74 .net
jqueryを使わずにpure jsで、ていう質問も大いにありえるから
分けたほうがいいとおも
309:Name_Not_Found
22/08/05 08:20:20.41 .net
JSスレはプログラム板のスレもあるんだよなあ
既にどちらも人がいないし、今から整理するのは無理そう
+ JavaScript の質問用スレッド vol.124 +
スレリンク(tech板)
310:Name_Not_Found
22/08/05 08:35:50.13 .net
どっちでも良い。
答える方としては、素のJS で書くのは非常に面倒
jQuery は可読性が高いので、読めない香具師はいないから、
ひとまず、jQueryで書いて、
それを質問者が書き直したければ、素のJSで書き直せばよい
311:Name_Not_Found
22/08/05 11:51:55.86 .net
jQueryスレやプログラム板でもいわれてるが、今は統合とかテンプレ修正とか、意欲ある人がいない
+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
スレリンク(hp板:683番)-687
+ JavaScript の質問用スレッド vol.124 +
スレリンク(tech板:253番)
>>307も統合を示唆してるが、「やりたいなら、お前が責任持ってやれ」といわれてもやらないだろ?
昔の風潮なら俺も手を貸しただろうが、今はやる気が全く起きないわ
まともな感性で保守する人は皆無だし、jQuery信者は健在だし、俺一人でどうにかなる問題でもないからな
312:Name_Not_Found
22/08/05 12:17:08.84 .net
jQueryスレはタイトル詐欺だから「jQuery質問用スレッド」にして
jQuery使わない人が迷い込まないようにすれば万事解決
313:Name_Not_Found
22/08/05 17:47:44.84 .net
>>312
リンク先をよく読め
jQueryスレは既にある
+ jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
スレリンク(hp板)
314:Name_Not_Found
22/08/05 19:12:45.74 .net
>>313
じゃ、タイトル詐欺スレを削除すれば解決だね
315:Name_Not_Found
22/08/21 11:50:33.80 5ThV/pZE.net
【環境】iOS Catalina 10.15.7,GoogleCrome104.0.5112.101
【何をしたのか】Editor.jsでデータを受け渡す方法について知りたいです。
【エラーメッセージ】そもそも方法がわからないのでエラー等は発生してません。
【期待する結果】Editor.jsで入力したデータを次のページで内容チェックし、更にMySQLへ登録したい。また、記事の編集の際にはMySQLからデータを読み出し、Editor.js上で編集したい。
【サンプルコード】このサイトとまったく同じ状態です。URLリンク(reffect.co.jp)
勉強のため自作のブログ投稿用CMSを作成しています。
formとphpで基本的な記事投稿(入力→実際の表示確認→MySQL登録)、記事の再編集(MySQLからのデータ読み込み→投稿フォームへの再表示→編集→MySQL更新)は完成しました。
ただ、現状では画像や表、リストなどを挿入するときにいちいちhtmlタグを入れなければいけないことから、WYSIWYGのひとつEditor.jsを使ってタグを自動生成したいと思っています。
phpのときには教科書どおりinputにnameをつけてPOSTでデータを受け渡してましたが、Editor.jsではdivにテキストエディタを表示させることから、どうやってデータを受け渡すのかつまずいています。
上記サイトではボタンを押すとconsoleに取得データを表示していますが、ボタンを押すと実際の記事表示を確認できるようにしたいと思っています。
どのようなやり方があるでしょうか。お力を貸してください。
316:Name_Not_Found
22/08/21 16:41:06.34 .net
>>315
console.logする代わりにデータ(JSON)を確認画面に渡して
確認画面側でEditorJSをreadonlyで表示するか
同じ画面でreadonly viewとedit viewとtoggleさせる(EditorJSのreadonly.toggle)
サーバーにPOSTするのはJSON
317:Name_Not_Found
22/08/22 08:46:09.58 .net
Ruby on Rails では、WYSIWYG エディターは、
Railsの作者・DHH の会社である、Basecamp 製のtrix を使う
318:Name_Not_Found
22/08/27 23:04:43.45 .net
もう終わりだよこの板も
319:Name_Not_Found
22/08/28 14:19:06.39 .net
JavaScriptスレは荒らされる前は平和だったんだけどね
今は見る影もない
320:Name_Not_Found
22/08/28 21:46:17.13 .net
今何とか機能してるのって愚痴スレとHTMLCSS質問スレとPHP質問スレがギリギリって感じか
語ることなんて特にないし仕方ないね
321:Name_Not_Found
22/08/31 23:57:52.92 .net
>>320
PHPも死んでね?
322:Name_Not_Found
22/09/01 22:47:44.67 .net
HTMLスレは板基準にすれば進んでるよなぁ
まあ最初にやるのがそれってのもあるけど。
初学者がくるようになればこっちも盛り上がるんだろうな?なるよな?
323:Name_Not_Found
22/09/01 23:34:56.25 .net
正直調べりゃ分かるからこっちに書き込むエネルギーなんて一々使わないだろってとこは思ってる
jsまで興味を持ったのなら調べるスキルっつーか知識欲も持ち合わせてるだろうし
その結果がこれよ
324:Name_Not_Found
22/09/02 00:35:32.25 .net
>>321
PHPの質問スレは板が違う
まあ向こうも同じようなもんだけど
325:Name_Not_Found
22/09/02 01:00:03.80 .net
javascriptもPHPもオワコン。
そしてプログラミングの初学者には難しすぎる
初心者はRubyから学習を始めるべき。
そしてRuby on Railsを習得すればPHPは不要
こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
↓
Ruby 初心者スレッド Part 67
スレリンク(tech板)
326:Name_Not_Found
22/09/02 09:40:03.86 .net
>>325
スレリンク(tech板:512番)
> 512 デフォルトの名無しさん (ワッチョイ 027c-5Ix7) sage 2022/08/19(金) 13:31:40.23 ID:Gwz5c/EG0
> Rubyガイジがこのスレに誘導しているみたいだけど
> 今更Rubyなんて流行らないし>>503でも指摘されているけど
> 新規案件でRubyやRailsなんて採用しないから初心者が勉強するだけ無駄だぞw
327:Name_Not_Found
22/09/06 13:50:31.39 .net
RUNTEQ
【知らないと転職無理】未経験エンジニアの疑問全て回答!
www.youtube.com/watch?v=5IzjaC6vEg0
この動画では、Ruby on Rails から始めろと言っている
ウェブ系で最も使われているフレームワーク。
スタートアップでよく使われる
高速開発で、日本語の情報が多い
328:Name_Not_Found
22/12/29 12:19:48.08 .net
JSで「日付が変わると自動で音が鳴る」というものを作りたいです。
329:Name_Not_Found
22/12/29 14:40:03.89 .net
どうぞどうぞ
330:Name_Not_Found
23/01/01 04:14:06.90 .net
>>328
すいません
JavaScriptで日付が変わると自動で音が鳴るというものを作るにはどうしたらいいですか?
331:Name_Not_Found
23/01/01 04:55:49.86 vLbVtKKA.net
>>330
このスレじゃ無理
こっちのスレで質問してみよう。親切な達人プログラマーが懇切丁寧に教えてくれるよ
Ruby 初心者スレッド Part 67
スレリンク(tech板)
332:Name_Not_Found
23/01/01 13:49:46.89 .net
>>331
Rudyって何ですか?
333:Name_Not_Found
23/01/01 16:22:43.15 .net
>>331
イタズラ乙
スレリンク(tech板:593番)-594
334:Name_Not_Found
23/01/02 18:52:30.50 .net
>>325,331
4ヶ月前もRuvyスレ移行で受け入れられなかったのに、懲りない人だね
335:Name_Not_Found
23/01/03 15:44:37.55 .net
画面遷移に伴って、リクエストヘッダを追加したいときどうすればいいか教えてください。
・1 サーバサイドで「Location」レスポンスヘッダを指定してリダイレクトさせるときに、
リダイレクト先アクセスにリクエストヘッダを添付させることは可能ですか?
・2 ブラウザ側で画面遷移するときに、リクエストヘッダをつけることは可能ですか?
<a>タグ、JavaScriptの「location.href」にリクエストヘッダ追加できますか?
・3 同じく<form>を飛ばすときにリクエストヘッダ付けられますか?
(補足)リクエストヘッダをつけるときに、思い浮かぶのはAjax, XHRを使うことですが、
これを使うと画面遷移は伴いません。
OAuthの勉強をしていて、アクセストークンをブラウザで保持して、それをAuthorizationヘッダーに
添付しないといけないことが分かったので、それをどうやってリクエストヘッダにセットするのかを調べています。
もしあるなら、その実装方法が載っているサイトが見つからなかったので教えてください。
336:Name_Not_Found
23/01/03 15:59:37.14 .net
>>335
これを質問した者と同じ者ですが、解決方法が分かったかもしれないので書きます。
まず一度、認証情報なしでアクセスすると、
サーバ側が「401: Authorization Requed」ステータスを返してきて、
そこに「WWW-Authenticate」というレスポンスヘッダで認証が必要である指定が返ってくるので、
それが返ってくるとブラウザは自動でAuthorizationヘッダをセットして再アクセスするので、
サーバサイドは、401を返して、WWW-Authenticateヘッダをレスポンスするように実装しておいて、
一度401でわざと失敗させればよいため、最初から自分でAuthorizationヘッダを添付しなくてもいいのかもしれません。
しかし、ブラウザはそれで自動的に正しいアクセストークンを選んでくれるのでしょうか?
認証サーバ(IdP)から払い出されたアクセストークンをブラウザのローカルストレージか何かに保存しとくと思いますが、
それを適切に選んでくれるかが心配です。
337:Name_Not_Found
23/01/03 16:25:07.78 .net
リダイレクト時にカスタムヘッダーを追加するのは無理
ブラウザがローカルストレージから自動的に特定のアクセストークンを取得してヘッダーに追加するようなことがあればセキュリティ的に大問題なのでこれも無理
(カスタムヘッダー無しのCookieだけでいいなら可能)
XHRで取得したレスポンス使ってクライント側JavaScriptで画面を更新する他ない
338:Name_Not_Found
23/01/03 16:31:47.61 .net
>>337
そのクライアント側JavaScriptで画面を更新するときに、
Authorizationヘッダーを要求されませんか?
そもそも、アクセストークンを要求するのはデータ取得用のAPIだけにとどめておいて、
画面を描画するようなURLに対してアクセストークンを要求してはいけないということでしょうか?
339:Name_Not_Found
23/01/03 23:40:35.44 .net
最近までAuthorizationヘッダーがそのままリダイレクトされてたみたいw
URLリンク(github.com)
HTTPの仕様的にはAuthorizationは削除したほうがいい的なことを書いてるのに・・・
Consider removing header fields that were not automatically generated by the implementation (i.e., those present in the request because they were added by the calling context) where there are security implications; this includes but is not limited to Authorization and Cookie.
URLリンク(www.rfc-editor.org)
340:Name_Not_Found
23/01/04 00:34:28.00 .net
Ruby on Rails では、Turbolinks を使って、
pjax(ajax と、historyAPI(popState, pushState))を利用して画面遷移する。
通信データを減らすために、body 部分しか変わらない
認証は、退屈な雛形を自動生成する
github.com/abhaynikam/boring_generators
Devise とか、Devise Omniauth(Facebook, GitHub, Google, Twitter)
一番分かりやすい OAuth の説明
qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
基本、日本の未経験者用のバックエンドで採用しているのは、
YouTube で有名な雑食系エンジニア・KENTA の言う通り、Rails優先
341:Name_Not_Found
23/01/04 20:25:37.82 afahpZwg.net
>>339
XHRで非同期でリクエストヘッダを付けてサーバへ送信すると
サーバサイドでLocationヘッダーでリダイレクトすると次のリクエストにも暗黙的に前のリクエストヘッダーが引き継がれるのか?
なかなか複雑だな。
だけどXHRでリダイレクトが帰ってきても自動的には画面遷移しない。
ブラウザ側でlocation.hrefしないと画面遷移しないがこの時はさすがに非同期の戻りのリクエストヘッダは引き継げないだろ。
それと、クロスオリジンでリダイレクトする時もリクエストヘッダー引き継がれるの?
342:Name_Not_Found
23/01/09 18:06:47.49 .net
初学者の者です
「Pixiv Filter」というChromeの拡張機能の話なんですけど、この拡張機能の一つに、Pixivの検索結果画面で、イラストごとの割り振られたタグを、本来は表示されない検索結果の画面で表示してくれるというものがある
この機能なんだけど、コード(GitHubで公開されている。URLはスパム対策で貼れない、申し訳ない)を読んでも仕組みがどうにも理解できなかった。
「イラストのURLに飛んで、そこからリンクを取得してくる」といったものかとも思ったが、どうやら違う模様
詳しい方いらっしゃったら、ご教授頂きたいです
343:Name_Not_Found
23/01/09 19:33:20.74 .net
ざっと見たところ
・作品ごとのタグは検索結果画面には表示されないものの検索結果データとして飛んできている
www.pixiv.net/ajax/search/artworks/***のリプライ内のdata[].tags[]という配列がそれ
・バックグラウンドで取得し直してそれをストレージに格納している
background.tsの123行目あたり
type.d.tsのWorksData型にtags配列あり
・検索画面にそれを表示している
search_page.tsの97行目あたり
実際に拡張機能入れて動かしたわけでもないしソース追っただけだから適当だけど
344:Name_Not_Found
23/01/09 21:27:33.60 .net
>>343
ご教授感謝です、参考にさせて頂きます
345:Name_Not_Found
23/01/10 01:47:07.95 .net
ちょっとしたデータを取得するのに、
「イラストのURLに飛んで、そこからリンクを取得してくる」みたいな、
副問い合わせをやっていたら大変
346:Name_Not_Found
23/01/11 00:32:53.42 dBdRyffW.net
>>345
ですよね…なんかちょっと変かな?という気はしていました、ありがとうございます
「API」とか「ストレージ」「トークン」「クッキー」みたいな通信の部分がからっきしなもので、色々調べながらやらせて頂きます
347:340
23/01/11 04:43:41.70 .net
漏れらだって、Ruby on Rails, Linux, Docker, AWS Solution Architect しか分からない
>>340
に書いたように、誰かが作った、退屈な雛形を自動生成して作っている
CSRF, Strong Parameter, pjax, place holder、データベースの設計など、
全部Railsで勉強しているだけ
348:Name_Not_Found
23/01/11 11:01:19.44 .net
>>346
察するにその拡張機能を調査分析するのに必要なスキルがまだ足りてないから
もう少し基礎知識を身につけてから挑んだ方がいいと思うよ
分不相応な挑戦は時間のムダにしかならない
あとRailsはNGワードに入れといた方がいい
349:Name_Not_Found
23/02/21 11:34:13.09 .net
cssファイルのセレクタに、別のjsonファイルの値をインポートして使える方法とかありませんか?
【jsonファイルの値】{color:green;}
みたいな。
350:Name_Not_Found
23/02/22 02:42:08.74 .net
sassファイルに、jsonファイルの読み込みとかってできたりする?
351:Name_Not_Found
23/03/24 07:50:31.37 ornKmOPA.net
コードを1人で書いてます。他人が見ることは100%ありません。
(a) function hoge(){ }
(b) var hoge = function(){ };
の区別や管理はどうしてますか?
・返り値のないものはa、あるものはb
・宣言のみは冒頭、実行の伴うものは後述
というルールで書いていましたが、
1万行近くなって見通しよくするために大まかな機能ごとにまとめるようになり
bが順序的に後述になる箇所が出てきました。
”機能ごと”は今後順序変更する可能性があります。
関数リテラルのメリットがいまいちわかりません。どんなメリットがあるのでしょうか?
また返り値有無関係なく全てaにして不便はありますか?
352:Name_Not_Found
23/03/24 18:33:56.71 .net
>>351
不便はありません
動的に変数の中身の関数を入れ替えたい場合だけ(b)で
353:351
23/03/24 22:38:34.30 .net
>>352
動的に全く違う関数に入れ替えられるのですね、なるほどです。
この件では各関数や引数の目的が明確固定ばかりなのでその場合はなさそうです。
極一部名前付き引数を使用していますが、関数内処理はほぼ一定で、その程度です。
ありがとう。
354:Name_Not_Found
23/03/25 00:37:00.35 .net
このJavascriptでdivをタブで切り替え表示のサンプルで
Works、Contactタブにimg srcで画像を埋め込んでた場合
Works、Contactタブを選んだ時にだけ画像や内容を読み込む動作ってどうやるの
URLリンク(posipan.com)
355:Name_Not_Found
23/03/25 19:04:37.36 .net
Lazyloadとか使うといいかと
356:Name_Not_Found
23/03/27 10:49:47.68 .net
>>351
細かい話をするとb自体は関数式であって関数リテラルというのはbの右辺を指す用語
aとbの違いについてはこのへんを参照のこと
URLリンク(developer.mozilla.org)
あと個人的な感覚としては返り値の有無で区別をするのはナンセンスだと思う
357:Name_Not_Found
23/03/27 13:58:05.40 .net
そんな自分のウンチク言ってないで質問に答えてやればいいのに
358:Name_Not_Found
23/03/27 20:31:02.45 .net
なんで上から目線で「質問に答えてやればいいのに」といえるのだろう?
359:Name_Not_Found
23/03/28 01:36:21.08 .net
なんか癪に障っただけだろう
360:Name_Not_Found
23/03/28 16:35:38.31 .net
>>358
何一つ答えてないからじゃね
361:Name_Not_Found
23/03/28 17:07:37.33 .net
>>360
それは上から目線である理由になってないね
>>358が聞きたいのはそっちだろう
362:Name_Not_Found
23/03/28 19:26:10.85 .net
上から目線を感じてしまうのはあなたが小さい人だからよ
363:Name_Not_Found
23/03/28 21:03:37.18 .net
>>356にケチつけるのと似たりよったりだね
364:Name_Not_Found
23/03/28 21:15:19.17 .net
356はケチつけられても仕方ない
回答もせず、どうでもいい知識自慢、「このへんを参照のこと」なんて上から目線、自己主張
362の通り気にしすぎ
365:Name_Not_Found
23/03/28 21:23:34.93 .net
争いは同じレベルでしか発生しない
366:Name_Not_Found
23/03/28 21:47:39.32 .net
>>364が気にし過ぎでフフッてなる
なるほど同レベルだね
367:Name_Not_Found
23/03/28 22:28:03.56 .net
以前はスコープの問題でfunction expression派のライブラリが数多くあった
strict modeができてからはfunction declaration派が増えたように思う
368:Name_Not_Found
23/03/28 22:43:12.53 .net
>>366
356本人?負け惜しみ?
369:Name_Not_Found
23/03/28 22:45:04.76 .net
半角カタカナw
370:Name_Not_Found
23/03/28 23:05:22.37 .net
>>368
気にしすぎですよ
371:Name_Not_Found
23/03/29 17:51:02.44 .net
MathJaxってVer3になって、レンダリングされた文字列を範囲選択出来なくなった?
372:Name_Not_Found
23/03/31 12:07:44.93 .net
こんにちは。
どなたか教えていただけませんか。
下記のようなコードを書いたのですが、
div部分が1つなら問題ないのですが、複数になると2つ目以降は反映されません。
そこでループにしないといけないのかな?と思うのですが知識が未熟でどうすればいいのか全くわかりません。
どなたかどうすればいいか教えて頂けませんでしょうか。
よろしくお願いします。
// HTML
<div class="fullimg"><img src="./img1.jpg" height="1000" width="1000"></div>
<div class="fullimg"><img src="./img2.jpg" height="500" width="500"></div>
// script
let imgd = document.querySelector("img");
let result = imgd.getAttribute("src");
let hresult = imgd.getAttribute("height");
let wresult = imgd.getAttribute("width");
const div = document.getElementsByClassName("fullimg");
div[0].innerHTML = '<label for="' + result + '"><img src="' + result + '" height="' + hresult + '" width="' + wresult + '"></label>';
373:Name_Not_Found
23/03/31 13:50:56.44 .net
ループ以前にlabelのfor属性は関連するフォーム要素のIDを指定するものなので生成しようとしてるhtml自体に問題があるよ
374:Name_Not_Found
23/03/31 14:25:37.98 .net
では再度サンプルコードを書いておきます。
// HTML
<div class="fullimg"><img src="./img1.jpg" height="1000" width="1000"></div>
<div class="fullimg"><img src="./img2.jpg" height="500" width="500"></div>
// script
let imgd = document.querySelector("img");
let result = imgd.getAttribute("src");
let hresult = imgd.getAttribute("height");
let wresult = imgd.getAttribute("width");
const div = document.getElementsByClassName("fullimg");
div[0].innerHTML = '<img src="' + result + '" height="' + hresult + '" width="' + wresult '">';
こちらでどうぞよろしくお願いします。
375:Name_Not_Found
23/03/31 17:01:16.18 .net
>>372
せめてループに挑戦してるけどうまく動かないから助けてってとこまではたどり着いてほしい気がするなぁ
初心者向けのループのレクチャーなんていくらでも見つかるわけだし
376:Name_Not_Found
23/03/31 22:42:19.54 .net
>>375
どこかから拾ったサンプルコードの修正依頼で自分は全く知識がないのだろう
377:Name_Not_Found
23/04/01 12:28:09.62 .net
これで音信不通になるようではな
諦めたか他所へマルチしに行ったか
378:Name_Not_Found
23/04/01 14:29:48.39 .net
これは、取得した値をそのまま設定しているだけだから、何も変わらない
jQuery なら、
// fullimg クラスの付いたdiv の、直下のimg
$( 'div.fullimg > img' ).each( function ( index, elem ) {
jQ_this = $( this )
const src = jQ_this.attr( 'src' ) // 取得
const height = jQ_this.attr( 'height' )
const width = jQ_this.attr( 'width' )
console.log( `${ index }: ${ src }, h: ${ height }, w: ${ width }` )
jQ_this.attr( 'src', src ) // 設定
jQ_this.attr( 'height', height )
jQ_this.attr( 'width', width )
} )
ログ出力
0: ./img1.jpg, h: 1000, w: 1000
1: ./img2.jpg, h: 500, w: 500
379:Name_Not_Found
23/04/01 15:06:47.33 .net
jQuery信者が喜ぶネタなんだな
380:Name_Not_Found
23/04/03 20:28:44.17 .net
【環境】VS Code
バージョン: 1.77.0
Electron: 19.1.11
Chromium: 102.0.5005.196
Node.js: 16.14.2
V8: 10.2.154.26-electron.0
OS: Linux x64 5.4.0-42-generic
【何をしたのか】イベントリスナー内でevent.target.valueを参照した。
【エラーメッセージ】プロパティ 'value' は型 'EventTarget' に存在しません。ts(2339)
【サンプルコード】
(() => {
"use strict";
const fruit = document.querySelector('select');
if (null === fruit) { return; }
fruit.addEventListener('change', (event) => {
if (null === event.target) { return; }
console.log(event.target.value);
});
})();
fruit === event.targetを実行するとtrueが返ったので、event.target.valueをfruit.valueに書き換えたところエラーが消えた。
イベントを扱うサンプルコードでは大抵event.target.valueが利用されているが、HTMLSelectElement.valueで置換した場合に何か落とし穴はありますか。
381:Name_Not_Found
23/04/03 21:47:26.64 .net
>>380
エラーが消えたからヨシ!は好ましくない
まずはts(2339)で検索してみよう
382:>>380
23/04/03 22:22:25.06 .net
>>381
エディタ上でts(2339)が出ていてもブラウザ上での実行は問題なくできます。
キャストするとts(2339)が消えますが、「型アサーション式は TypeScript ファイルでのみ使用できます。ts(8016)」が発生します。
ブラウザで実行すると、「Uncaught SyntaxError: Unexpected identifier 'as' (at hoge.html:24:35)」が発生します。(TypeScriptの構文なので当然ですが……)
fruit === event.target;はtrueなので置き換えたのですが、トラップや問題はありますか。
(エディタ上のts(2339)も消えるし実行もできるので、落とし穴がなければこれで行きたいな、と)
383:Name_Not_Found
23/04/03 22:36:04.36 .net
>>382
そもそもTypeScriptを書こうとしてるわけじゃないのになんでtsエラーが出てるの?ってこと
vscode右下の言語モードがTypeScriptになってるんじゃないの?
384:Name_Not_Found
23/04/03 23:01:10.11 .net
>>383
なってないです。拡張機能も無効です。
i.imgur.com/TE6gwcY.jpg
385:Name_Not_Found
23/04/03 23:26:56.16 .net
>>384
うちではTSでは出るけどJSでは出ない
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
おそらく何かvscode側の問題だろう
で、エディタの問題ならなおさらfruit.valueで解決とするのは悪手
386:Name_Not_Found
23/04/03 23:39:06.45 .net
>>384
わかった、vscodeの設定に↓があるんじゃない?
"js/ts.implicitProjectConfig.checkJs": true
これ追加したらうちでもJSでエラー出た
387:>>380
23/04/03 23:48:50.00 .net
>>385 >>380
原因が判明しました。"js/ts.implicitProjectConfig.checkJs"がtrueでした。
型のチェックはしたいので、event.target.valueの上に@ts-ignoreを書いて解決します。
ありがとうございました。
388:>>380
23/04/03 23:51:00.10 .net
>>386
まさにそうでした。ありがとうございました。
389:Name_Not_Found
23/04/04 00:27:18.41 .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
23/04/04 00:53:07.21 .net
>>387
@ts-ignoreもなんか負けたみたいでいやだけども調べてみてもいい解決策はなさそう
致し方なしかな
>>389
正常に動くかどうかの話はしてないよ
よく読もう
391:Name_Not_Found
23/04/04 10:04:45.82 .net
fruitがHTMLSelectElementなのは確定してるから
event.currentTargetがHTMLSelectElementであることは推定できそうだな
event.target じゃなくて event.currentTarget にしたらどうなるかね
392:Name_Not_Found
23/04/04 10:48:34.90 .net
>>387
型チェック入れるとか
if (null === event.target || !(event.target instanceof HTMLSelectElement)) { return; }
キャストするとか
console.log(/** @type {HTMLSelectElement} */ (event.target).value);
393:Name_Not_Found
23/04/04 11:43:11.41 .net
>>392
そのへん少し試したけどうまくいかなくて諦めてた
致し方なしとか言う前にもう少し手を尽くすべきだった
反省
394:>>380
23/04/04 19:16:22.79 .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
23/04/04 22:54:34.70 .net
1つのイベントハンドラが複数の要素に対して設定されることは一般的で、その場合はevent.targetを使うことになる
今回のケースはそうでないにしても、可搬性や拡張性を考えれば常にevent.targetを使用しておくという判断は妥当だろう
あと処理結果は同じでも、イベントの起こった要素に対して処理をする、という意図をコードに残す意味もある
いずれにしろ現時点のそのコードだけを考えるならお好きなように
396:>>380
23/04/05 00:34:18.58 .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
23/04/05 10:13:44.20 .net
>>389
に書いた
複数のコントローラーに、イベント登録する場合、
外側・親に、イベントを付けて、親側で子のイベントをキャッチする
398:Name_Not_Found
23/04/05 11:14:44.19 .net
このjQuery信者は文脈や論点ってものを全く理解しないのな
jQueryでは~jQueryなら~ってただただ念仏を唱えて布教に励む様子がまさに信者
399:Name_Not_Found
23/04/05 13:56:33.20 .net
Slickで出来てSwiperでできないようなアニメーション処理って何かある?
400:Name_Not_Found
23/04/06 13:40:22.56 .net
Mathjaxって配列環境でcolspan, rowspanって使えないのか?
\multicolumnというべきか
401:Name_Not_Found
23/04/13 11:04:39.61 08KgWRFK.net
JavaScript でローカルファイルを読み書きするにはどうすればいいでしょうか?
fetchという関数が使えるかと思ったんですが、blocked by CORS policy というエラーになってしまいます。
402:Name_Not_Found
23/04/13 14:00:39.10 .net
CORS(Cross-Origin Resource Sharing)制限は、
ローカルPC 上に、何かのサーバーを立てて、そこから配信すれば良い
VSCode の拡張機能、open in browser では、
file:/// から始まるローカルファイル・アクセスだから、CORS制限あり
file:///C:/Users/Owner/Documents/test.htm
一方、Live Server では、サーバーを立てているから、CORSにならない
URLリンク(127.0.0.1:5500)
同様に、コマンドプロンプト・PowerShell から、
1-liner で、Ruby で作られた遅いウェブサーバー、WEBrick を起動すると、
ruby -run -e httpd . -p 8080
これも、サーバー経由だから、CORSにならない
URLリンク(localhost:8080)
403:Jun
23/04/26 01:05:22.69 2ly3VJ6h.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
JavaScriptで電卓を作るよ。
404:Name_Not_Found
23/04/27 09:25:37.76 .net
ChatGPTを使って
405:Jun
23/04/27 23:52:36.98 qkYl27sL.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
JavaScript + HTML + CSS で電卓やホームページを作るのが今の目標です。
406:Name_Not_Found
23/05/09 15:14:09.97 .net
マイナーな質問
XyJaxで、一括して文字色を変える方法教えてくれ
\color{red}を使っても、その箇所だけしか変更できない。
\xymatrix環境内全部の文字色を変えたい
407:Name_Not_Found
23/05/10 19:05:11.90 .net
>>406自己解決
408:Name_Not_Found
23/06/16 12:40:56.37 .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
23/06/16 14:16:25.94 .net
>>408
document.querySelectorAll('.abc').forEach(element => element.closest("div").classList.add('def'));
410:Name_Not_Found
23/06/16 14:24:00.49 .net
>>409
レスありがとうございます。
closestなんてものがあるのですね。知りませんでした。
おかげで思うように行きました。
ありがとうございます。
411:Name_Not_Found
23/06/16 16:50:32.34 .net
>>408
これでもいけると思う
document.querySelectorAll('div:has(> .abc)').forEach(x=>x.classList.add('def'));
412:Name_Not_Found
23/06/16 16:57:38.56 .net
これでもいいのかな?間になにか挟まってたらダメだけど
('div >:is(.abc)')
413:Name_Not_Found
23/06/16 17:02:39.12 .net
>>411,412
こちらもありがとうございます。
大変助かります。
414:Name_Not_Found
23/07/14 05:34:41.98 zlYPgrgm.net
URLリンク(jsfiddle.net)
こんな表示状態で、textarea に入力して改行していき、表示可能行数を超えると、スクロール状態になります。
入力された行数に応じて textarea が縦に伸びて、textareaのコンテナにあたる li もそれに応じて縦に伸びるようにするにはどうすればいいのでしょうか?
415:Name_Not_Found
23/07/14 17:33:09.83 .net
自前でやろうとせずにライブラリ探してきたら?
416:Name_Not_Found
23/07/14 17:53:03.06 .net
textarea 高さ 自動
でググるとそれっぽいのあったよ
417:Name_Not_Found
23/07/17 03:34:14.72 .net
SELECTタグで、人物を選択出来るようにしたいのですが、SELECTが非展開の時はIDだけ表示して、
展開した時だけ、IDと人物名が表示されるようにする方法を教えてください。
人物配列
↓
var array =
[
{
"id": 1,
"name": "人物1"
},
{
"id": 2,
"name": "人物2"
}
]
こんな表示にしたいです。
↓
URLリンク(i.imgur.com)
418:Name_Not_Found
23/07/17 08:04:52.05 .net
展開したときにどこにID表示されてるの?
419:Name_Not_Found
23/07/17 12:41:46.99 .net
>>417
一応確認するが、非展開時に数字にする意図は何?
フォーム送信時に数字を送信したいだけなら、尊信値(value属性値)と表示する選択肢(子要素の文字列)を分けて書くだけで良いのだが
420:Name_Not_Found
23/07/19 04:29:50.61 .net
URLリンク(getbootstrap.jp)
Bootstrap 5 のDropdowns のページの一番最後に、
ドロップダウンイベントについて書いてある
show.bs.dropdown/shown.bs.dropdown
このイベント発生時に、表示テキストを入れ替えれば?
421:Name_Not_Found
23/07/25 00:23:24.85 .net
(-。-)y-゜゜゜
422:Name_Not_Found
23/11/20 22:52:12.45 .net
何をしていいか分からないな…
423:Name_Not_Found
23/12/12 22:36:34.47 .net
変数名はキャメルケース(getNameなど)がよく使われるようですが、
スネークケース(get_nameなど)はやはり使わない方がいいですか?
424:Name_Not_Found
24/02/28 02:36:50.61 pCYviIFS.net
URLリンク(liveweave.com)
JavaScriptでスプリッターを作っているのですが、左右を分割するスプリッターをマウスで動かしても、マウスの位置とずれてしまいます。
どのように修正すればいいのでしょうか。
425:Name_Not_Found
24/03/28 04:02:18.18 .net
>>423
良いか悪いかはさておき
考え方としては
そのコードを、どのくらいの範囲で共有するのか
ってのを基準に考えたらいいと思う
自分だけなら好きにすればいいし
身内だけなら話して決めればいいし
広範囲なら世間一般の流れに合わせるべき
みたいな
426:Name_Not_Found
24/03/28 04:07:49.72 .net
>>417
すんごい前だけど
似たようなことを頑張ったことある
でもやっぱり
select要素が開いているかどうかを判定出来ないので
原理的に出来なくて
select要素のように振る舞うものを
手作りするのが早かったです
427:Name_Not_Found
24/04/08 00:13:34.85 .net
今動作しているのがサーバ上(https//:~)なのかローカル(file:///C:~)なのか区別する必要性が出てきました。
locationで取得する以外にいい方法ありますか?
区別さえ確実にできれば得られる値は(true/falseなど)なんでもいいです。
428:Name_Not_Found
24/04/08 12:44:09.64 .net
>>427
window.location.protocolを見れば良いんじゃないかな
httpかhttpsなら、みたいな
429:Name_Not_Found
24/04/18 13:55:10.68 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
24/04/18 17:45:29.04 .net
>>429
select_tag.selectedIndexに
今選ばれてるoptionが何番目かが入ってるから
select_tagのchangeイベントにフックして
その数字を拾って、people[数字].idを参照したらいいよ
431:Name_Not_Found
24/04/18 17:53:34.56 .net
ごめん間違えた
people[数字].roomだった
すまんこ
432:Name_Not_Found
24/04/19 02:15:05.41 .net
>>431
出来ました!ありがとうございます!
select_tag.addEventListener("change", (e) =>{
let i = select_tag.selectedIndex;
alert(people[i].room);
});
433:Name_Not_Found
24/05/07 02:22:40.33 YeUeQCju.net
calleeという古語を使っていたが
怒られた
434:Name_Not_Found
24/05/07 06:21:21.73 .net
>>433
arguments.calleeは無名関数式で使う人が多かった印象
URLリンク(developer.mozilla.org)
名前付き関数式に変えれば解決する課題だと思う
435:Name_Not_Found
24/05/09 18:11:07.56 .net
今のJavascriptファイルの管理って、どれがスタンダードになっていますか?
webpackはだいぶ古いんですよね?
436:Name_Not_Found
24/05/09 20:40:41.69 .net
>>435
そもそもwebpackは管理するものではないのだが…
バンドルツールのシェアのことなら
webpackがまだまだ支配的だと思う
viteとturbopackが頑張り始めたところだけど
この辺はJSだけの話ではなくなるので
なんとも言い難い感じ
437:Name_Not_Found
24/05/09 20:42:16.82 .net
パッケージの管理のことなら
npm一択な気がする
ツール自体はyarnとかpnpmとか色々あるけど
438:Name_Not_Found
24/05/10 01:03:55.90 .net
Ruby on Rails では、npm は遅いから、yarn を使う
Rails 7 からは脱webpack で、
Import Maps で、CDN から直接インポートする
HTTP/2 が普及して、バンドル・Node.js が不要になった。
バンドル不要のTailwind を使う
バンドルするなら、esbuild, rollup, webpack を使う。
esbuildならCSS プロセッサとして、Bootstrap を使う
439:435
24/05/10 08:14:30.07 .net
>>436-438
バンドルツールのことです。
webpack→viteと学んでいるのですが、
正直複雑すぎてついていけてません・・・
特にviteでバンドルして生成されるファイル構成に
どうしても違和感があって、勉強を中断しています。
ChatGPTに聞くとviteのようにハッシュ値で変換した
ファイル名にすることでセキュリティが高まるそうですが、
元のファイル名から変わるのに違和感を覚えます
440:438
24/05/11 08:51:08.46 .net
Vite は、Vue.js の作者だったか?
Vueも、Vue 3 で人気が無くなって、React 一色になった
2, 3年前は、Vueが転職で有利だったのに、
今は、React, TypeScript
ブラウザのキャッシュ対策として、
ファイル名はハッシュ値の方が良い
ファイルを更新するとハッシュ値も変わるから、
古いファイルがキャッシュされない
どうせ配布用のファイル名だから、開発用には関係ない
441:Name_Not_Found
24/05/11 17:41:41.54 .net
Viteの書き出すファイル名はconfigで変更できたような
442:Name_Not_Found
24/05/12 01:16:53.68 .net
>>439
元のファイル名がわかることに
どこまで意味があるのか?って話じゃね?
たとえばbabel+webpackだって
トランスパイル、パッキング後は
部分的にバイナリになったりするわけで
要するに人間の読めるものではなくなる
つまり、ファイル名がハッシュ化されなくても
人間が得られるものはせいぜい
そのファイルがなんなのかの想像がつきやすい
程度のこと
ファイル名が中身と全く関係ない
なんてこともよくあるとは言わんまでも
一定数わけで、となるとデプロイされるファイル名には
それほど大きな意味がない
ってことが多いのではないかな
443:438
24/05/12 01:18:55.04 .net
Vite は、Ruby on Rails をコピーしたのかな?
foreman, webpack-dev-server で、hot reload するみたいな?
ファイルを修正したら、即ブラウザに反映されるとか
開発時には、CSS をコンパイルせず、
動的にスタイルを当てているだけとか
444:435
24/05/13 12:34:09.69 .net
Viteの使い方がやっとわかりました!
ファイル名が変わるのは許容します
これから少しずつ学んでいきます
みなさんアドバイスありがとうございました
445:Name_Not_Found
24/05/19 12:06:09.78 .net
実際にサイトをサーバーに公開することになったらファイル名のうしろにつくハッシュ値の恩恵がわかると思うよ
キャッシュのこと気にしなくていいからね
446:Name_Not_Found
24/05/19 17:31:28.31 t4Sl9HBx.net
アプリで登録されたユーザー情報をWEBアプリで管理するということで
制作会社から管理画面のラフが送られてきたのですが、
ある箇所で、アプリで登録したユーザーのメアドをプルダウンで選択するんだそうです。
447:Name_Not_Found
24/05/19 17:31:42.46 t4Sl9HBx.net
続き
「今はテストなので登録数は20-30件ですが、仮に50,000人とかになったら?」
と尋ねたら「プルダウンされた50,000行の中から目視で探す」んだそうで
それが正しいやり方だと言い張って平行線です。
どう論破したら良いでしょう?
448:Name_Not_Found
24/05/19 17:31:54.90 t4Sl9HBx.net
URLリンク(imgur.com)
449:Name_Not_Found
24/05/19 17:32:34.27 t4Sl9HBx.net
長文の投稿ができなかったので分割にて投稿させていただきました。
何卒よろしくお願いいたします。
450:Name_Not_Found
24/05/19 21:33:26.78 .net
論破もくそもねーわ
変更したいなら変更すればいいじゃん
これ100%発注側の問題だからな
451:Name_Not_Found
24/05/19 21:37:15.08 .net
まあそうだわな
客あるあるだけど
欲しいもの、必要なものをちゃんと説明できないのは
本当によくあることで
だいたいの不幸や不具合はそこが起点になるんだ
作る側もそれはわかってるから
出来るだけ真意を聞き出そうとはするんだけど
で、平行線になってるってことは
説明不足のまま、もう作っちゃったからでしょ
ちゃんと追加料金払って変更してもらいなさいな
452:Name_Not_Found
24/05/19 23:34:29.79 t4Sl9HBx.net
今後のために教えてください。
「アプリで登録されたユーザー情報」を「WEBアプリで管理したい」
という話し合いはしていましたがプルダウンにする/しないという
話し合いは確かにしていませんでした。
また自分は普段別の領域で制作業務を行なっており
アプリに関して無知ですが制作系はそこそこのクライアントをこなしています。
アプリの業界では特に話し合いを詰めないと
この様な非常識な仕様がポンと出てくるものなのでしょうか?
自分がいる業界ならば二度と仕事は振られないと思います。
(考えれば使いづらいのは話し合うまでもなくわかるでしょう、それがわからないのなら次はない、という感じ)
453:Name_Not_Found
24/05/20 04:30:40.53 .net
>>452
>「アプリで登録されたユーザー情報」を「WEBアプリで管理したい」という話し合い
いやいやざっくりすぎやろw
項目すら詰めてないとか非常識にもほどがあるんだけど
454:Name_Not_Found
24/05/20 04:41:36.75 .net
>この様な非常識な仕様がポンと出てくるものなのでしょうか?
どういう会社にどういう条件でいくら支払うか次第
海外とかにユルユルな発注を低予算でやるとそれなりによくあること
さすがに5万件になったら使いづらいというのは受注側も百も承知
それが理解できないような人間には出会ったことがない
お金の問題かスケジュールの問題か人不足か
いずれにしろ仕様変更の影響度が大きすぎるから今の条件では対応できないということ
ぶっちゃけ言えば君から二度と仕事を振られなくても別に困らないということでもある
455:Name_Not_Found
24/05/20 05:52:45.85 .net
非常識な業者は多い。
だから優秀な社員、又はアドバイザーみたいな第三者を雇う。
例えば家の売買なら、直接売買せずに宅建業者を通すのと同じ
後はキャンセルして、裁判して金を取り返す。
そんな業者と付き合っても損するだけ
詐欺みたいなもの
456:Name_Not_Found
24/05/20 10:57:02.57 .net
>>452
>アプリに関して無知ですが
無知な人が関わっちゃったのが
問題の根っこなのはさて置き
データ件数とかは設計時に検討した?のかな?
自分も死ぬほど経験しているけど
ウェブ制作会社のディレクターって
ウェブのこと全然知らないじゃん?
あんまり関わらない方がいいよ
自分でも作れるけどやらないだけ、くらいになるまでは
457:Name_Not_Found
24/05/20 12:27:55.29 .net
NGワードに引っかかって書けない
458:Name_Not_Found
24/05/20 12:29:03.18 .net
登録済みユーザーを一覧できる画面とか存在しないのかな?
負荷を無視して単に使い勝手を改善したいならデータリストに変更すれば解決
459:Name_Not_Found
24/05/20 13:50:28.68 .net
独自のプルダウンを開発すれば5万件いける
無限スクロールすればいい
460:Name_Not_Found
24/05/21 00:30:12.39 rWUCBStb.net
質問者です。
知り合いのエンジニアさんが助けてくれて
解決できる機能のソースコードは持っていて、
自由に使って良いですよ、と言われているのですが
提案したらクオリティの担保ができないから断られました。
まあわかるんですが、クオリティが低いから問題になっているのですが、、という感じです。
461:Name_Not_Found
24/05/21 02:01:35.96 .net
その開発会社思ったよりはまともそうでよかったじゃんw
462:Name_Not_Found
24/05/21 02:09:32.00 .net
キチガイクライアント掴んでしまったか
463:Name_Not_Found
24/05/21 10:08:23.66 .net
書けば書くほど墓穴を掘っていくな
君が第一にやるべきはソースコードを渡すことじゃなくて
どう修正して欲しいかを含めて整合性のある要求仕様としてまとめて提示することだぞ
単純なCRUDアプリなんだから要求仕様さえきちんとまとまっていればこんな問題は起きない
464:Name_Not_Found
24/05/21 10:26:57.06 .net
モバイルアプリで登録済みのユーザー情報を管理するためのWebアプリなら
普通は検索画面、一覧画面、ユーザー単位の詳細画面があって
一覧画面や詳細画面からユーザー単位の編集画面へリンクされるので
編集画面でそのユーザーのメールアドレスをドロップダウンから選ぶ必要はない
あるユーザーと別のユーザーを手作業で紐づける機能が必要ということであれば
ユーザー単位の編集画面から紐づける機能を起動して検索画面 -> 一覧画面 -> 詳細画面と辿る
この場合は紐づけ処理中かどうかで一覧画面や詳細画面の内容を変える必要があるから画面数の扱いとしては別画面
465:Name_Not_Found
24/05/21 10:59:06.94 .net
このくらい小規模な開発だと
要件定義含めて客とのやり取りと
客に説明するためのドキュメント作りがコストの大半だからな
それを理解しない客は避けるに越したことがない
466:Name_Not_Found
24/05/21 18:20:05.59 rWUCBStb.net
>>463
単純なCRUDアプリであれば、
整合性のある要求仕様を提出しなくても
ある程度のクオリティが上がってくるものだとおもっていました。
こちらは私の完全な落ち度ですね。
ただ、この場合制作会社が
「仕様書がなかったから、或いは具体的な指示がなかったから50,000行を一気に表示しても良いと思った」
として50,000行を一気に表示するようなものを作った、みたいなことはよくあることなのでしょうか?
自分の業界であれば素人のクライアントには合理的な解決法をアドバイスするかなと思います。後で自分が地雷撤去で困ることもあるし、次の仕事がほしいので。