Как вызвать функцию, которая вызывается из другой функции, только когда НЕ выполняется нажатие на определенный div? - PullRequest
0 голосов
/ 12 апреля 2019

Я звоню campusInfo(id) нескольким местам в моем коде.Внутри функции campusInfo(id), которую я вызываю campusInfo_2(HouseID).

Один из случаев, когда я вызываю campusInfo(id), - это нажатие кнопки div.В этом случае я не хочу вызывать campusInfo_2 (HouseID).

Вот функция JavaScript campusInfo (id), которая вызывает campusInfo_2 (HouseID)

//campus information
function campusInfo(id) {
    fetch(`https://api/` + id)
        .then(r => r.json())
        .then(r => {
            const mapClassToResponse = {
                '.campus-name': 'name',
               '.program-levels-values:eq(4)': 'annualTuition'
            };
            var HouseID = r['Houses'][0]['HouseID'];

        Object.keys(mapClassToResponse).map(k => {

            $(k).html(r[mapClassToResponse[k]]);
        });

        //formatting numbers to have commas
        $(".program-levels-values:eq(4)").digits();
        $(".campus-number:eq(0)").digits();
        $(".campus-number:eq(1)").digits();            

        //program-levels
        $(r.programLevels).each(function (index, item) {
            $('.program-levels-values:eq(0)').append(item.programLevel + ' ');
        });

        //institution control
        if (r.isInstitutionControlPublic == false) {
            $('.program-levels-values:eq(2)').html('Private');
        } else {
            $('.program-levels-values:eq(2)').html('Public');
        }

campusInfo_2(HouseID);            
    }).catch(console.log);
 };

Здесь находится div, где яне хочу, чтобы campusInfo_2 (HouseID) вызывался

  <div class="other-school" onclick="campusInfo(10)"><label 
  class="other-schools-list">Portland State University</label</div>

Вот то, что я пробовал до сих пор, но в консоли говорилось, что элемент не определен.

  if(document.getElementsByClassName('other-school').clicked == false)
        {
        campusInfo_2(HouseID);
        }

1 Ответ

0 голосов
/ 12 апреля 2019

Одним из предложенных решений было бы предоставить дополнительный аргумент.

<div class="other-school" onclick="campusInfo(10, false)">

Тогда определение вашего метода изменится на:

function campusInfo(id, skipSecondCampusInfo) {

Если вы передадите это только во встроенной привязке, то это будет undefined для всех остальных вызовов. Тогда ваш звонок может быть окружен:

if (skipSecondCampusInfo !== false) campusInfo_2(HouseID);

В этом случае, если он не определен, он выполнит его. В противном случае, если оно ложно, оно не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...