首页 > 解决方案 > 当未单击特定 div 时,如何仅调用从另一个函数中调用的函数?

问题描述

campusInfo(id)在我的代码中调用了几个地方。campusInfo(id)我正在调用的内部函数campusInfo_2(HouseID)

我正在调用的实例之一campusInfo(id)是在 div 的 onclick 上。在这种情况下,我不想调用 CampusInfo_2(HouseID)。

这是调用 CampusInfo_2(HouseID) 的 CampusInfo(id) javascript 函数

//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);
 };

这是我不希望调用 CampusInfo_2(HouseID) 的 div

  <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);
        }

标签: javascriptjqueryfunction

解决方案


一个建议的解决方案是提供一个额外的论点。

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

然后您的方法定义将更改为:

function campusInfo(id, skipSecondCampusInfo) {

如果您只在内联绑定中传递它,那么它将undefined在所有其他调用中。因此,您的电话可能会被以下内容包围:

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

在这种情况下,如果它未定义,它将执行它。否则,如果它是假的,它不会。


推荐阅读