亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何擴展此 javascript/html 或正確編寫它?

如何擴展此 javascript/html 或正確編寫它?

互換的青春 2023-04-14 17:16:39
我是 javascript 的半新手。我有它的基礎知識。(我來自使用 HAXE 編程語言制作簡單的 2d 游戲)。我試圖對大量數據實施下拉排序。我失敗得很慘。所以我查了幾個例子,發現了這個:<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><script type="text/javascript">    $(document).ready(function () {        $("#ddlCountry,#ddlAge").on("change", function () {            var country = $('#ddlCountry').find("option:selected").val();            var age = $('#ddlAge').find("option:selected").val();            SearchData(country, age)        });    });    function SearchData(country, age) {        if (country.toUpperCase() == 'ALL' && age.toUpperCase() == 'ALL') {            $('#table11 tbody tr').show();        } else {            $('#table11 tbody tr:has(td)').each(function () {                var rowCountry = $.trim($(this).find('td:eq(1)').text());                var rowAge = $.trim($(this).find('td:eq(2)').text());                if (country.toUpperCase() != 'ALL' && age.toUpperCase() != 'ALL') {                    if (rowCountry.toUpperCase() == country.toUpperCase() && rowAge == age) {                        $(this).show();                    } else {                        $(this).hide();                    }                } else if ($(this).find('td:eq(1)').text() != '' || $(this).find('td:eq(1)').text() != '') {                    if (country != 'all') {                        if (rowCountry.toUpperCase() == country.toUpperCase()) {                            $(this).show();                        } else {                            $(this).hide();                        }                    }                    if (age != 'all') {                        if (rowAge == age) {                            $(this).show();                        }                        else {                            $(this).hide();                        }                    }                }             });        }    }
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

“ALL”是什么意思?


'ALL' 來自以下內容:


var country = $('#ddlCountry').find("option:selected").val();    

var age = $('#ddlAge').find("option:selected").val();

然后將其傳遞給您的函數 SearchData (country, age)


據我了解,td:eq(#) 在表中占據了一個位置?


td:eq() 

使用 eq 選擇器,它根據括號 () 內的索引選擇一個元素。由于沒有額外的過濾器,它只會在該索引處獲取 td。注意:索引是從 0 開始的,因此如果有 5 個單元格,您將得到單元格 0、1、2、3、4。


https://api.jquery.com/eq-selector/


為什么所有內容都轉換為大寫?


在這種情況下,確實沒有理由轉換為大寫(或小寫)。通常是“規范化”來自用戶的輸入數據。如果他們決定鍵入 All、all、ALL 等,將它們轉換為“ALL”更容易進行比較。


我如何擴展這段代碼以包含多個選擇。它會是大量的 if/else 還是這段代碼寫得不好并且一個簡單的循環就足夠了?


如果不進一步說明您要完成的任務,我無法對此做出太多回答?,F在你的邏輯看起來大致是這樣的:


If Country = "All" & Age = "All"

    Return Everything

If Country != '' Then

    If Country != 'All'

        Return Country rows that match

    If Age != 'All'

        Return Age rows that match

此代碼是多余的。它比較 rowCountry != '' OR rowCountry != ''。您可以將 $(this).find('td:eq(1)').text() 替換為 rowCountry 以使其更易于閱讀。


$(this).find('td:eq(1)').text() != '' || $(this).find('td:eq(1)').text() != ''

您可以看到此 rowCountry 設置為相同的值:


var rowCountry = $.trim($(this).find('td:eq(1)').text());


查看完整回答
反對 回復 2023-04-14
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號