⊗jsSpExcDAE 148 of 294 menu

Пример за исклучок со data- атрибути во JavaScript

Нека при вчитување на страницата серверот креира HTML код, во кој се чуваат име, цена и количина на купениот производ:

<div id="product" data-product="јаболко" data-price="1000" data-amount="5"></div>

Ајде да направиме функција, која ќе прима референца до елементот со производот и ќе ја наоѓа вкупната цена на производот (цената ќе се множи со количината):

function getCost(elem) { return elem.dataset.price * elem.dataset.amount; }

Ајде да ја најдеме цената на нашиот производ:

let product = document.querySelector('#product'); let cost = getCost(product); alert(cost);

Да ја замислиме сега следнава ситуација: поради некаков проблем на серверот, тој ни испрати производ, во кој недостасува цена или количина (или и двете одеднаш), на пример, вака:

<div id="product" data-product="јаболко" data-price="1000"></div>

Ако сега се обиде да се пресмета цената на производот, резултатот на екранот ќе биде NaN. Се согласувате, не е многу информативно.

Излегува, ние треба некако да се заштитиме од тоа да недостасуваат атрибутите што ни се потребни. Ова може да се направи на два начина. Првиот начин е да се каже дека ова е нормално однесување и едноставно да се провери со if услови дали ги има потребните атрибути:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { return 0; // враќаме нешто, на пример, 0 или null или false } }

Втората опција е да се каже дека недостасувањето на атрибутот data-price или data-amount - е исклучителна ситуација. Во овој случај ние ќе фрламе исклучок:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { throw { name: 'ProductCostError', message: 'недостасува цена или количина на производот' }; } }

Која од двете опции е поприкладна овде - тоа е избор на програмерот. Тој може да ја смета проблематиката за нормална работа на скриптата или за исклучителна ситуација.

Да речеме дека одлучивме дека ситуацијата е исклучителна. Тогаш кодот за добивање на цената на производот ќе изгледа вака:

let product = document.querySelector('#product'); try { let cost = getCost(product); alert(cost); } catch (error) { // некако реагираме на исклучокот }

Променете го мојот код така што функцијата getCost ќе фрла два типа на исклучоци: ако недостасува цената и ако недостасува количината. Добро размислете за имињата на овие исклучоци. Во блокот catch прикажете различни пораки за грешка за исклучоци од различни типови.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј