11 of 17 menu

JavaScript-те сілтеме бойынша өту қатесі

Күтпеген сілтеме бойынша өтумен байланысты қатені қарастырайық. Мысал ретінде келесі сілтемені берейік:

<a href="">link</a>

Сілтемені айнымалыға алайық:

let link = document.querySelector('a');

Сілтемеге басу оқытығышын байланыстырайық:

link.addEventListener('click', function() { console.log(this.textContent); });

Және міне осында бізді таңғажайып күтеді. Код дұрыс жазылған, дегенмен, консольде шығарылым пайда болмайды. Себебі, басқан кезде сілтеме бойынша өту орын алады. href атрибутында ештеңе көрсетілмегендіктен, сілтеме жай ғана ағымдағы бетке бағыттайды.

Бұл сілтемені басу бетті қайта жүктеуге әкелетінін білдіреді. Яғни біздің деректер консольге шығарылады, содан кейін бет қайта жүктеледі, және консоль бос болады.

Егер мұқият қараса, онда басу сәтінде деректер консольде сәттеп пайда болып, содан кейін жоғалатындығын көруге болады. Бұл дәл осы қатенің сипаттамалық белгісі.

Бұл мәселені қалай шешуге болатынын қарастырайық.

Бірінші шешім

href сілтемесіне решетка қою керек. Бұл сілтеменің ағымдағы беттің белгілі бір орнын көрсетуіне әкеледі және басқан кезде сілтеме қайта жүктелу болмайды. Мұны жасайық:

<a href="#">link</a>

Екінші шешім

Неғұрлым жетілдірілген әдіс - әдепкі әрекетті болдырмау preventDefault әдісі арқылы:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау