Chcę przypisać onclick dla
(nie link) w skrypcie Greasemonkey, ale nie wiem jak.
Proszę o prosty przykład.
Chcę przypisać onclick dla
Proszę o prosty przykład.
Podaj jaka to strona, który konkretnie element i co ma wykonać się po kliknięciu. W innym wypadku jest setka sposobów na dobranie się do tego elementu (co do jego położenia) a nikt nie będzie zgadywał.
Samo zdarzenie możesz dodać poprzez setAttribute albo stworzyć zdarzenie onclick dla obiektu (funkcja).
Strona: YouTube.
Element:
document.getElementById('hatrzy')
A po kliknięciu ma wykonać:
var ropozycji = document.getElementById('watch-next-list-body-collapsed').getElementsByTagName('ul')[0].getElementsByClassName('video-list-item');
var ablicy = ropozycji.length;
ablicy -= 1;
for (nrp=0; nrp<=ablicy; nrp++) {
var wyspod = document.getElementById('watch-next-list-body-collapsed').getElementsByTagName('ul')[0].getElementsByClassName('video-list-item')[nrp].getElementsByTagName('a')[0].getElementsByClassName('stat')[1];
var wyspodwar = wyspod.innerHTML;
var znakiwyspod = wyspodwar.length;
var powys = wyspodwar.substring(14, znakiwyspod);
var znakipowys = powys.length;
efektpowys = kropcosto(powys, ".");
wyspod.innerHTML = efektpowys;
var znakowm = znakipowys - 1;
var znakowm2 = znakipowys - 2;
var str1 = powys.substring(znakowm, znakipowys);
var str2 = powys.substring(znakowm2, znakipowys);
if (znakipowys == 1) {var hwc = " wyświetlenie";} else {
if (str1 == 0 || str1 == 1 || str1 == 5 || str1 == 6 || str1 == 7 || str1 == 8 || str1 == 9 || str2 == 12 || str2 == 13 || str2 == 14){var hwc = " wyświetleń";}
else {var hwc = " wyświetlenia";}
}
wyspod.innerHTML += hwc;
}
var h3 = document.getElementById('hatrzy');
h3.addEventListener("click", ser, false);
function ser()
{
alert("mario@");
}
A teraz jeszcze dodać do tego opóźnienie wykonania funkcji.
function ser()
{
var czas = 2;//czas opoznienia w [s]
setTimeout(function()
{
// tutaj dajesz skrypt
alert("mario@ 12");
//////////////////////
},czas*1000);
}
Wyszła kolejna sprawa: chcę aby po jednym (1) kliknięciu wyłączyła się ta funkcja (a właściwie klikalność
Zrobiłem to tak:
var zero = 0;
function ser() {
if (zero == 0){
zero=1;
// tutaj dajesz skrypt
alert("mario@ 12");
//////////////////////
}
Ale wolałbym wyłączyć samo wywoływanie funkcji.
function ser()
{
h3.removeEventListener("click",ser,false);
var czas = 1;//czas opoznienia w [s]
setTimeout(function()
{
// tutaj dajesz skrypt
alert("mario@ 12");
//////////////////////
},czas*1000);
}
Coś jest nie tak bo przycisk działa dwa razy, a ma działać tylko raz. I JAK DODAĆ DO TAKIEJ FUNKCJI WARTOŚCI, TAKIE COŚ:
h3.addEventListener("click",ser(ARG),true);
NIE DZIAŁA.
Nie krzycz. Można by napisać tak
var zmienneH3 = function () {ser("mario@");};
var h3 = document.getElementById('hatrzy');
h3.addEventListener("click", zmienneH3, false);
function ser(txt)
{
h3.removeEventListener("click", zmienneH3, false);
var czas = 1;//czas opoznienia w [s]
setTimeout(function()
{
// tutaj dajesz skrypt
alert(txt);
//////////////////////
},czas*1000);
}
Mi tam działa tak jak powinno.
Znalazłem tą stronę:
http://kurs.browsehappy.pl/JavaScript/Zdarzenia
Ale mam kolejny problem:
Przekazana wartość powinna być taka, jakie ID ma kliknięty obiekt.
Np.
var zmienneH3 = function () {ser(this);};
var h3 = document.getElementById('hatrzy');
h3.addEventListener("click", zmienneH3, false);
function ser(obiekt)
{
h3.removeEventListener("click", zmienneH3, false);
var czas = 1;//czas opoznienia w [s]
setTimeout(function()
{
// tutaj dajesz skrypt
alert(obiekt.id);
//////////////////////
},czas*1000);
}
W takim układzie zamiast
h3.removeEventListener("click", zmienneH3, false);
możesz napisać
obiekt.removeEventListener("click", zmienneH3, false);