簡體   English   中英

使用javascript修改沒有ID的HTML元素的樣式和onclick函數

[英]Using javascript to modify an HTML element's style and onclick function without an ID

我正在嘗試使用帶有 Tampermonkey 的用戶腳本來修改網頁上包含 id 屬性的一些 HTML 元素。

我正在嘗試在一個相對基本的 javascript 語言學習游戲網站上重新啟用一些禁用的按鈕。 我將更改樣式屬性,使它們看起來與常規按鈕相同,並更改 onclick 值,以便它們實際啟動游戲而不是什么都不做。

現在,當我對每一個元素使用檢查元素時,我知道如何做這兩件事,並且我已經確認它有效。 當我嘗試編寫用戶腳本來為我執行此操作時,問題就出現了 - 我環顧四周,但似乎找不到解決此問題的方法。

這是我要更改的按鈕之一的代碼:

我想改變這個:

<label onclick="xgotoPlayCarPuzzle();" style="border:outset;font-size:14px;background-color:darkgrey;color:white;">&nbsp;Car Puzzle (2 pts)&nbsp;</label>

對此:

<label onclick="gotoPlayCarPuzzle();" style="width=100%;border:outset;font-size:14px;color:blue;">&nbsp;Car Puzzle (2 pts)&nbsp;</label>

我敢肯定,如果我能找出如何只為這一個做這件事,我可以很容易地為其他人做這件事。 它們幾乎都遵循相同的格式,並且只有其他三個按鈕。

一些可能有幫助的信息:

  • 所有禁用的按鈕都具有相同的樣式屬性。 如果有一種方法可以找到具有 style 屬性的元素,那可能就是要走的路。
  • 這些按鈕由菜單訪問,當與菜單外的另一個元素交互時,該菜單關閉。 每次關閉並重新打開時,按鈕的屬性都會重置。 這意味着腳本將需要重復。

提前致謝!

所有禁用的按鈕都具有相同的 style 屬性 如果有一種方法可以找到具有 style 屬性的元素,那可能就是要走的路。

有而且確實存在。 您需要一個querySelectorAll查詢樣式屬性。

let matched = document.querySelectorAll("label[style='border:outset;font-size:14px;background-color:darkgrey;color:white;']");

您還可以潛在地定位onclick屬性:

let matched = document.querySelectorAll("label[onclick='xgotoPlayCarPuzzle();']");

這是我的解決方案:

 function xgotoPlayCarPuzzle(event){ let theElement=event.target; theElement.style.width="100%"; theElement.style.backgroundColor="red"; }
 <label onclick="xgotoPlayCarPuzzle(event);" style="border:outset;font-size:14px;background-color:darkgrey;color:white;">&nbsp;Car Puzzle (2 pts)&nbsp;</label>

也許你只是想使用標簽選擇器並在獲取元素后修改其屬性。

 function playHook() { alert(1); } (function(){ const eles = document.querySelectorAll("body > div > div > label") eles.forEach(item => { item.onclick = playHook; item.style.background = "blue"; }) })();
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Selector</title> </head> <body> <div> <div> <label onclick="xgotoPlayCarPuzzle();" style="border:outset;font-size:14px;background-color:darkgrey;color:white;">&nbsp;Car Puzzle (2 pts)&nbsp;</label> </div> <div> <label onclick="xgotoPlayCarPuzzle();" style="border:outset;font-size:14px;background-color:darkgrey;color:white;">&nbsp;Car Puzzle (2 pts)&nbsp;</label> </div> <div> <label onclick="xgotoPlayCarPuzzle();" style="border:outset;font-size:14px;background-color:darkgrey;color:white;">&nbsp;Car Puzzle (2 pts)&nbsp;</label> </div> <div> <label onclick="xgotoPlayCarPuzzle();" style="border:outset;font-size:14px;background-color:darkgrey;color:white;">&nbsp;Car Puzzle (2 pts)&nbsp;</label> </div> </div> </body> </html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM