11 of 17 menu

JavaScriptдаги ҳавола ўтиш хатоси

Кутолмаган ҳавола ўтиш билан боглик хатоликни кўриб чиқайлик. Мисол учун куйидаги ҳавола берилган бўлсин:

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

Ҳаволанимизни ўзгарувчига оламиз:

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

Ҳаволанимизга босилшини қайта ишлаш функциясини бирлаштирамиз:

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

Ва мана бу ерда бизни кутолмаган воке кутмоқда. Код тўғри ёзилган, аммо, консольда чиқиш пайдо бўлмайди. Гапи шундаки, босилганда ҳавола буйича ўтиш амалга ошади. href атрибутида ҳеч нарса кўрсатилмагани сабабли, ҳавола жўналлиши жорий саҳифага йўналтирилган.

Бу шунни англатадики, ҳаволага босилғанда саҳифа қайта юкланadi. Яъни бизнинг маълумотларимиз консольга чиқарилади, сўнг саҳифа қайта юкланadi, ва консоль бўш бўлиб қолади.

Aгар диққат билан кўриб чиқилса, у ҳолда кузатиш мумкинки, босилган лаҳзада маълумотлар консольда бир лаҳза пайдо бўлади, сўнг йўқолади. Бу эса айнан шу хатоликнинг xarakterli белгисидир.

Келгил, бу муаммони қандай ҳал қилиш мумкинлигини кўриб чиқайлик.

Биринчи ечим

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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш