[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
48: (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)11:16 ID:RJZpwhgn0(5/6) AAS
>>47
高速化で考えるべきは「ループ回数の削減」と「変換回数の削減」

>>41 source
>>42 reduce
>>47 map

reduceはループ回数は削減されているが、変換回数がsourceよりも多い
要素数6では「変換コスト > 検索コスト」になってしまい、sourceよりも遅い
要素数192では「変換コスト < 検索コスト」となるので、sourceよりも速い

mapの変換回数は2回で Array.from() と results.values() のみ
ループ回数、変換回数ともにsource,reduceよりも少ない
省3
49
(1): (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/03(土)11:42 ID:RJZpwhgn0(6/6) AAS
>>39
a要素でマークアップされているなら、難しくはない

for (let a of document.querySelectorAll('a[href]')) a.target = '_blank';

window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある
50
(3): (ワッチョイ 9534-9i1j [14.14.181.44]) 2022/09/04(日)09:22 ID:eAq4eNQY0(1) AAS
>>40
>>49
ありがとうございます。

テーブルの表示となっていて、行全体にリンクが設定されているようです。
以下のような記載が複数並んでおり、通常は左クリックでリンク先に移動しかできず、新しいタブで開くことができません。

<tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”>
<td class=”〇〇〇”></td>
<td class=”〇〇〇”></td>
</tr>

素人ながらいくつかブックマークレットで試したのですが、逆に実行するとリンクが無効になる事が多々でした。
省1
51
(1): (ワッチョイ d510-bEl6 [180.12.82.129]) 2022/09/04(日)12:38 ID:FoFuUBY00(1/2) AAS
<div style="width:100%;height:200px;border:Solid 3px #0000ff" id="test"></div>

これのcss初期設定を取得したいのでstyle="○○"の○○部分を抽出したいんだけどやり方がわかりません。
element.style.widthみたいに取得すると途中で値を書き換えられると初期設定が得られないので
最初にタグに埋め込んであるものを取得したいんです。
52
(1): (ワッチョイ 955f-EB17 [14.8.104.32]) 2022/09/04(日)20:07 ID:KWOOnIlI0(1) AAS
getAttributeとか?
53
(1): (ワッチョイ 7561-rTOP [222.144.116.143]) 2022/09/04(日)20:23 ID:FTTWPGH/0(1) AAS
element.style.hoge=fugaしたらstyle属性値も連動するんだから
書き換える前に取得しとくしかなくね?
54
(1): (ワッチョイ 3501-vbgY [126.94.243.226]) 2022/09/04(日)21:15 ID:SMoCQy1h0(1) AAS
>>51
・直後にscript書いて書き換え前にstyleを取得しておく
・Fetch APIでhtmlをGETしてCSPでscript無効化してparseしてstyleを得る
55: (ワッチョイ d510-bBdM [180.12.82.129]) 2022/09/04(日)22:38 ID:FoFuUBY00(2/2) AAS
>>52-54
ありがとうございました
56
(1): (ワッチョイ d52c-6nWD [180.52.202.152]) 2022/09/04(日)23:03 ID:9ocqxCfk0(1/2) AAS
>>50
開発者が、どのフレームワークを使っているのか分からないけど、
例えば、Ruby on Rails, Stimulus を使っているなら、

[Rails]Stimulusを使ってtableの行全体<tr>をリンクにする(jQuery不要)
外部リンク:zenn.dev

これのhref_controller.js に、

export default class extends Controller {
toHref(event) {

// 既定の動作を取り消す
event.preventDefault()
省6
57: 56 (ワッチョイ d52c-6nWD [180.52.202.152]) 2022/09/04(日)23:14 ID:9ocqxCfk0(2/2) AAS
>>56
// URL を設定する
window.location.href = href

みたいに直接、window.location.href に設定しているけど、

この場合、Ctrl + クリックや、
右クリックメニューから新しいタブで開くことは出来ないのかな?
58
(1): (ワッチョイ e3b7-9TNW [211.124.165.35]) 2022/09/04(日)23:26 ID:RdtW7bNN0(1) AAS
>>50
遷移する時にdata-targetが使われることを見込んでこれでいけるかもね
for (let tr of document.querySelectorAll('tr.〇〇〇')) tr.dataset.target = '_blank'
※〇〇〇はtrのクラス名で
59
(1): (JP 0H93-Dk2f [103.163.220.88]) 2022/09/05(月)18:27 ID:XvLqNcU6H(1) AAS
document内の要素で、textContentに'xxx'を持つクラスを取得するにはどうしたらいいですか?
全部の要素総当たりでtextContent調べるしかないんでしょうか?
60: (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/05(月)18:51 ID:ng2JfbNn0(1/3) AAS
>>50
JavaScriptコードが不明なので正確な回答は不可能

>>58の想定通りなら、おそらくその実装が一番楽
tr要素ノードにclickイベントハンドラでwindow.openする実装と仮定して、下記実装が考えられる

1. elementdataset.hrefでリンク先アドレスを得る
2. createElementでa要素ノード生成
3. replaceChildで(A)のDOMになるよう調節
4. tr要素ノードの仕掛けられたであろうclickイベントハンドラをevent.stopImmediatePropagation()で封印

(A)
<tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”>
省5
61
(1): (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/05(月)19:18 ID:ng2JfbNn0(2/3) AAS
>>59
XPath式を使えば、textContentを使わなくて済む
外部リンク:jsfiddle.net
62: (ワッチョイ 3501-bBdM [126.94.243.226]) 2022/09/05(月)19:25 ID:ng2JfbNn0(3/3) AAS
>>61
テキストノードを子に持つ要素ノードを捕捉するコードにすればよかった
外部リンク:jsfiddle.net
63
(2): (アウアウウー Sa69-QaXK [106.129.180.164]) 2022/09/07(水)17:04 ID:zBxXyTwva(1) AAS
プログラミング初心者でJavaScriptを勉強してます。
メンバ変数A、メソッドBを持つクラスがあり、メソッドBの中で変数Aを活用(Aを用いた処理やAの変更)したいのですが、
Aを引数としてBに渡して返り値として受け取るのと、Bの中で直接this.Aと記述して処理するのは何か違いがありますか?
メソッドBに別の変数を渡す可能性があるなら前者でないといけないのでしょうが、そうでなければ後者の書き方でよいでしょうか?
64
(2): (ワッチョイ 6501-vbgY [60.85.61.123]) 2022/09/07(水)18:23 ID:LU0OXBc/0(1/2) AAS
>>63
this.Aは全てのインスタンスメソッドで参照できる
this.Aはインスタンスを参照可能なスコープ上で参照可能

仮引数AはメソッドBの関数スコープ外から参照不可能
65
(1): (ワッチョイ 232c-HH83 [219.162.239.51]) 2022/09/07(水)19:11 ID:8NMkvrFG0(1) AAS
Ruby で書くと、
initialize は、constructor

class A
def initialize
@x = 0
end

def f_1
@x = 1
end

def f_2( num )
省8
66
(1): (スッップ Sd43-5GnA [49.98.171.228]) 2022/09/07(水)19:17 ID:GIiuva0od(1) AAS
>>64
それ何にも疑問の解決になってないだろう
67: (ワッチョイ 6501-bBdM [60.85.61.123]) 2022/09/07(水)20:26 ID:LU0OXBc/0(2/2) AAS
>>66
↓のsetAとcalcAの違いを聞いてるんじゃないのか?

class Foo {
constructor (a) {
this.A = a;
}
setA (a) {
this.A = calc(a);
}
calcA (a) {
省4
1-
あと 935 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s