Отметьте три элемента Dom, чтобы узнать, пусты они или нет, и вернуть подробный результат

Я проверяю три элемента в DOM, чтобы увидеть, пусты они или нет, чтобы я мог запускать только вызовы Ajax, которые я должен запускать и экономить на общей пропускной способности. Код работает, но «плохо пахнет». Вот мой источник.

const processValues = (area, city, text) => {
    if (area.val() && city.val() && text.val()) {
        return 'all';
    } else if (area.val() && city.val() && !text.val()) {
        return 'areaCity';
    } else if (area.val() && !city.val() && text.val()) {
        return 'areaText';
    } else if (area.val() && !city.val() && !text.val()) {
        return 'city';
    } else if (!area.val() && city.val() && text.val()) {
        return 'cityText';
    } else if (!area.val() && !city.val() && text.val()) {
        return 'text';
    } else if (!area.val() && city.val() && !text.val()) {
        return 'city';
    } else {
        return 'none';
    }
};

Я буду повторять эту проверку в нескольких методах, и я буду использовать оператор switch в этих методах с возвращенными строковыми значениями. Если есть лучший способ сделать это, я был бы признателен.

1 ответ
1

После разговора с друзьями это было замечено как лучшее решение. Однако потребовалась одна корректировка возвращаемых значений; замените регистр с верблюжьего на заглавный. Я также использую константы, чтобы гарантировать правильное использование возвращаемых значений.

/**
 * Check the three dom elements to see if they are empty or not and return detailed result.
 * @param {jQuery|HTMLElement} area Area input field.
 * @param {jQuery|HTMLElement} city City input field.
 * @param {jQuery|HTMLElement} text Text input field.
 * @return {string} Detailed result of which input fields are empty.
 * If all are filled, returns "all".
 * If none are filled, returns empty string.
 */
export const processValues = (area, city, text) => {
    const a = (area.val()) ? 'Area' : '';
    const c = (city.val()) ? 'City' : '';
    const t = (text.val()) ? 'Text' : '';
    if (a !== "" && c !== "" && t !== "") {
        return "all";
    } else {
        return a + c + t;
    }
};

export const ALL = "all";
export const AREA_CITY = "AreaCity";
export const AREA_TEXT = "AreaText";
export const AREA = "Area";
export const CITY_TEXT = "CityText";
export const CITY = "City";
export const TEXT = "Text";
```

  • Пожалуйста, попробуйте использовать либо "" или же '' во всех случаях. Пожалуйста, также попробуйте использовать лучшее именование, чем a, c, t. Зачем тебе это нужно export эти константы? Где none?

    — Питер Чала


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *