javascript - 替代 JS/JQuery 中的许多 if/else 语句?

标签 javascript jquery performance if-statement

<分区>

我正在尝试将许多页面元素从它们的初始值与用户更改的值进行比较,以提示他们保存等。

有没有更好的方法来做这个检查而不需要很多 if/else 语句?开关不起作用,因为要检查许多不同的值,而不是在许多情况下检查一个值。欢迎任何提示/指点,谢谢!

if ($('#InitialhidLeadType').val() != $('#hidLeadType').val())
        bIsChange = true;
    else if ($('#InitialhidProductType').val() != $('#hidProductType').val())
        bIsChange = true;
    else if ($('#InitialhidFixedFilterType').val() != $('#hidFixedFilterType').val())
        bIsChange = true;
    else if ($('#InitialhidMinCreditScore').val() != $('#hidMinCreditScore').val())
        bIsChange = true;
    else if ($('#InitialhidMaxCreditScore').val() != $('#hidMaxCreditScore').val())
        bIsChange = true;
    else if ($('#InitialhidMinLoanAmount').val() != $('#hidMinLoanAmount').val())
        bIsChange = true;

    else if ($('#InitialhidMinLTV').val() != $('#hidMinLTV').val())
        bIsChange = true;
    else if ($('#InitialhidMaxLTV').val() != $('#hidMaxLTV').val())
        bIsChange = true;
    else if ($('#InitialhidMinCLTV').val() != $('#hidMinCLTV').val())
        bIsChange = true;
    else if ($('#InitialhidMaxCLTV').val() != $('#hidMaxCLTV').val())
        bIsChange = true;
    else if ($('#InitialhidPropertyType').val() != $('#hidPropertyType').val())
        bIsChange = true;
    else if ($('#InitialhidPropertyUse').val() != $('#hidPropertyUse').val())
        bIsChange = true;
    else if ($('#InitialhidBankruptcy').val() != $('#hidBankruptcy').val())
        bIsChange = true;
    else if ($('#InitialhidForeclosure').val() != $('#hidForeclosure').val())
        bIsChange = true;
    else if ($('#InitialhidLoanPurpose').val() != $('#hidLoanPurpose').val())
        bIsChange = true;
    else if ($('#InitialhidIsCashout').val() != $.trim($('#hidIsCashout').val()))
        bIsChange = true;
    else if ($('#InitialhidNoCreditScore').val() != $.trim($('#hidNoCreditScore').val()))
        bIsChange = true;
    else if ($('#InitialhidRelationship').val() != $.trim($('#hidRelationship').val()))
        bIsChange = true;
    else if ($('#InitialhidCurrentLoanVA').val() != $.trim($('#hidCurrentLoanVA').val()))
        bIsChange = true;
    else if ($('#InitialhidFoundHome').val() != $.trim($('#hidFoundHome').val()))
        bIsChange = true;
    else if ($('#InitialhidFHA').val() != $.trim($('#hidFHA').val()))
        bIsChange = true;
    else if ($('#InitialhidIsConforming').val() != $.trim($('#hidIsConforming').val()))
        bIsChange = true;
    else if ($('#InitialhidMSA').val() != $('#hidMSA').val())
        bIsChange = true;
    else if ($('#InitialhidStatedCreditRating').val() != $('#hidStatedCreditRating').val())
        bIsChange = true;
    else if ($('#InitialhidCampEffectivedate').val() != $('#hidCampEffectivedate').val())
        bIsChange = true;
    else if ($('#InitialhidCampExpirationdate').val() != $('#hidCampExpirationdate').val())
        bIsChange = true;
    else if ($('#InitialhidIsFixedFilter').val() != $('#hidIsFixedFilter').val())
        bIsChange = true;
    else if ($('#InitialhidTestCompaign').val() != $('#hidTestCompaign').val())
        bIsChange = true;

    else if ($('#InitialhidSelectedStates').val() != $('#hidSelectedStates').val())
        bIsChange = true;
    else if ($('#InitialhidVolumeTieredPricing').val() != $('#hidVolumeTieredPricing').val())
        bIsChange = true;
    else if ($('#InitialhidWeekDayCapacity').val() != $('#filterCapacity').val())
        bIsChange = true;
    else if ($('#InitialhidWeekendCapacity').val() != $('#filterCapacityWeekEnd').val())
        bIsChange = true;
    else if ($('#InitialhidHolidayCapacity').val() != $('#filterCapacityHoliday').val())
        bIsChange = true;

///////////////////////////////////// HTML Below //////////////////////////////////////

<div id = "changeCheck">

<asp:HiddenField ID="InitialhidLeadType" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidProductType" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidFixedFilterType" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMinCreditScore" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMaxCreditScore" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMinLoanAmount" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMaxLoanAmount" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMinLTV" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMaxLTV" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMinCLTV" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMaxCLTV" ClientIDMode="Static" runat="server" />

<asp:HiddenField ID="InitialhidWeekDayCapacity" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidWeekEndCapacity" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidHolidayCapacity" ClientIDMode="Static" runat="server" />

<asp:HiddenField ID="InitialhidPropertyType" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidPropertyUse" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidBankruptcy" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidForeclosure" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidLoanPurpose" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidIsCashout" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidNoCreditScore" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidRelationship" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidCurrentLoanVA" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidFoundHome" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidFHA" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidIsConforming" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidMSA" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidStatedCreditRating" ClientIDMode="Static" runat="server" />

<asp:HiddenField ID="InitialhidCampEffectivedate" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidCampExpirationdate" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidIsFixedFilter" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidTestCompaign" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidSelectedStates" ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="InitialhidVolumeTieredPricing" ClientIDMode="Static" runat="server" />

最佳答案

遍历元素,比较每一个,如果有变化,提示用户保存:

var save = false;

$('[id^="Initial"]').each(function() {
    if ( this.value != $('#'+this.id.replace('Initial','')).val()) save = true;
});

if (save) confirm(' would you like to save ');

通常你会以不同的方式解决这个问题,通过在元素更改时更改变量,而不是在某个时间检查所有元素:

var save = false;

$(':input').on('change', function() {
    save = true;
});

window.onbeforeunload = function() {
    if (save) confirm(' would you like to save ');
}

关于javascript - 替代 JS/JQuery 中的许多 if/else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709958/

相关文章:

java - StringBuilder 追加与 +

javascript - 奇怪的异步 node.js

javascript - Cckeditor 不允许使用 img 元素

javascript - 如何在php中屏蔽javascript字符串

jquery - 在 jQuery 中获取元素

php - JQUERY 中的页面已更改

java - HashSet 与 ArrayList contains() 几个小型 String 集合的性能

javascript - 使用 jquery 使用 .on() 将事件附加到页面上的动态插入按钮

javascript - 淡入 div 特定时间,然后淡出

performance - -XX :+AggressiveOpts on Sun JRE 1. 6u20 启用了哪些标志?