Javascript - onclick

birinchi marta bu erda joylashtirmoqchiman, lekin xudo biladiki, har doim muammolarni qidirish uchun ushbu saytdan foydalanaman: R, men hozir o'zimning muammomni boshdan kechiryapman, shuning uchun Google bo'ylab osonlikcha qidirishni o'ylay olmayman taxminan 2 soat mobaynida, men nihoyat sizning savolingizga javob berishga qaror qildim.

Bu erda amalga oshirmoqchi bo'lgan narsa - bu tugmani bosganingizda tartibga solish panelini ochadigan tugmani bosib, div ga tegishli tugmani bosish. Bu tugma div-ga to'g'ri ko'rsatilsa-da, negaki men onclick funktsiyasini hayotimda saqlab qolish uchun ishlashga qiynalmayman. Men bilan ishlaydigan kod. Agar bu etarli bo'lmasa, iltimos, menga xabar bering, men bir oz ko'proq sous qo'shaman. : R.

function place_widget(name, properties){
//bbox
var pleft = properties[0];
var ptop = properties[1];
var width = properties[2];
var height = properties[3];
var pright = pleft + width;
var pbottom = pleft + height;
var bbox = [pleft, ptop, pright, pbottom];
boxes[name] = bbox;

//ID's
var id = 'widget_' + name;
var editspanid = id + "_editspan";
var editbuttonid = id + "_editbutton";
var editpaneid = id + "_editpane";

//Creating Elements
var div = "<div id='" + id + "' class='widget' onmouseover='widget_hover(event);' onmouseout='widget_out(event);'>";
var editbutton = "";
var editspan = "" + editbutton + "";
var editpane = ":)";
div += editspan + editpane + "</div>";
body.innerHTML += div;

//Configuring Elements
var editspanelement = document.getElementById(editspanid);
var editbuttonelement = document.getElementById(editbuttonid);
editbuttonelement.onclick = alert; //Does nothing.
var editpaneelement = document.getElementById(editpaneid);
var mainelement = document.getElementById('widget_' + name);
mainelement.style.left = (pleft + leftmost) + "px";
mainelement.style.top = (ptop + topmost) + "px";
mainelement.style.width = width;
mainelement.style.height = height;
getContentsAJAX(name);
}

Haqoratli kod uchun uzr so'raymiz: P Har bir inson onclick funksiyasi nima uchun ishlashini bilmasa?

Bundan tashqari, qo'shimcha ma'lumot bir oz: Agar Firebug ochsangiz va qo'ying:

document.getElementById('widget_Text_01_editbutton').onclick = alert;

Men tugmani bosganimda, quyidagilardan iborat:

uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "native frame ::  ::  :: line 0" data: no]

Men qo'lni nima demoqchi ekanimni aniq bilmayman.

Rahmat!

1
Aye. Men kelajakda bunga aminman. Rahmat!
qo'shib qo'ydi muallif Jeremy, manba
JS/HTML kodini joylashtirish bilan bog'liq umumiy izoh: ba'zida ba'zi odamlar ba'zan kodni ko'rib chiqishlari va ba'zi xatolarni aniqlay olishlari mumkin bo'lsa, boshqalarga sizga yordam berishi mumkin: 1) butunlay chop etish; faqat faylga ko'chiring va brauzer bilan oching va/yoki 2) uni jsfiddle.net ga qo'ying.
qo'shib qo'ydi muallif Tom, manba

3 javoblar

O'zgartirishni xohlaysizmi:


quyidagilar:


Bundan tashqari, siz yozgan funktsiyani "ogohlantirish" deb hisoblaysizmi?

1
qo'shib qo'ydi
Hmm. Bu toggleEditni onclickning boshlanishida chaqiradi va men xato qilmasam, uning qiymatini onclick hodisasi sifatida qaytarib beradi. Men nima qilmoqchi ekanligimni emas. Men haligacha u erda onclick borligini tushunmadim: P Men bu ishni bajarishga harakat qiladigan juda ko'p usullarni sinab ko'rmoqdaman. Rahmat!
qo'shib qo'ydi muallif Jeremy, manba
Ko'rinayapman. Qattiq jism uchun uzr so'raymiz: P ToggleEdit (); ish bermadi, garchi men uni ogohlantirish uchun o'zgartirdim va ishlay boshladim. Men hozirda toggleEdit funktsiyasi bilan bog'liq muammo borligini taxmin qilyapman. Bu mening oxir-oqibat. Ehtimol, sizning yechimingiz hiylaga aylandi! :) Katta rahmat! Lekin, men hali ham tugallanish.onclick funktsiyasi ishlamay qolgani bilan qiziqaman.
qo'shib qo'ydi muallif Jeremy, manba
Yo'q, bu toggleEdit() ni chaqiradigan va bu funksiyani tasvirning onclick hodisasi ishlovchilariga bog'laydigan anonim funksiya yaratadi.
qo'shib qo'ydi muallif Mike Christensen, manba
Ha, window.alert Javascript funktsiyasi emas va bir marta bosish operatori uchun qayta qo'ng'iroq sifatida foydalanilmaydi. Uni .onclick = function() {alert ('') kabi Javascript funktsiyasiga ulashingiz kerak. };
qo'shib qo'ydi muallif Mike Christensen, manba
Yo'q, bu tirnoqlarda bo'ladi, shuning uchun mag'lubiyat bosish vaqtida baholanadi.
qo'shib qo'ydi muallif jfriend00, manba

Buni o'zgartirish orqali boshlang:

editbuttonelement.onclick = alert; //Does nothing.

bunga:

editbuttonelement.onclick = function() {alert("Got a click");};

va keyin buni o'zgartiring:

var editbutton = "";

bunga:

var editbutton = "";

Nimalarni bosish kerak? Tasvir yoki aloqa yoki oraliq? Sekinlashtirilgan voqeani qaysi ma'lumotni olishni bilasizmi?

1
qo'shib qo'ydi
Bu aslida ilgari bo'lgan boshqa muammo. Men shunga o'xshash bir ishni qildim, lekin anonim funktsiyani yaratishda, Firefox menga vazifaning nom bo'lishi kerakligini aytdi (g'alati huh?). Lekin men faqat siz so'ragan narsangizni qo'ydim va bu xatoni menga bermaydi, garchi bo'lsa ham davom etadi. Ha, rahmat.
qo'shib qo'ydi muallif Jeremy, manba
document.getElementById('widget_Text_01_editbutton').onclick = alert;

ogohlantirish ichida bu ni boshqa bir narsaga (elementga) window dan o'rnatishga harakat qilayotganligi sababli noqonuniy chaqiruv sabab bo'ladi.

alert.call( {} )
//TypeError: Illegal invocation

alert.bind( window ).call( {} )
//works

Ya'ni:

document.getElementById('widget_Text_01_editbutton').onclick = alert.bind( window );

yoki yuqorida aytib o'tilganidek, faqat ba'zi brauzerlarda ishlaydi:

document.getElementById('widget_Text_01_editbutton').onclick = function(){alert();};
0
qo'shib qo'ydi
Javobingiz uchun tashakkur! Afsuski, buni FireBug-ga qo'yarkan, men tugmani bosgan holda men hali ham bir xil xatolarga duch kelmoqdaman. Bundan tashqari, bu kodda hech qanday foyda yo'q. Bu chinakam shov-shuv, ha? : R rahmat!
qo'shib qo'ydi muallif Jeremy, manba
Bu sizning xatoingiz emas, hozirgi xato, ogohlantirish uchun hech qanday hodisa yo'q (bu yong'in xarakteri, xrom hech narsaga e'tibor bermayapti). alert.bind (oyna, "123") ni ko'ring va
qo'shib qo'ydi muallif Esailija, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb