簡體   English   中英

如何找到動態生成的HTML元素?

[英]How to find a dynamically-generated HTML element?

當我的RadGrid離開編輯模式時,我需要獲取RadComboBox的客戶端實例(或RadComboBox的新選擇的值),以便將更改后的值回發到服務器。

問題是,對象的客戶端ID總是會更改。 此外,不會在運行時創建RadComboBoxes-僅在用戶雙擊我的RadGrid的特定行之后才創建RadComboBox。 因此,語法例如

var SundayLoc = $find("<%= FieldOpsScheduler_ctl00_ctl05_RCB_SunLocale.ClientID %>");

等於失敗。 直到我開始改變價值,我才得以擺脫:

var SundayLoc = $find("FieldOpsScheduler_ctl00_ctl05_RCB_SunLocale");

每次我都能完美地工作,直到我添加了一些行分隔符對象,這些對象現在導致id的“ ctl05”始終根據用戶進入編輯模式的行而改變。 我嘗試使用獲取此對象及其值的所有事項,但無濟於事。

我打算嘗試使用正則表達式,直到在RegEx上通過bobince 匹配開放標簽閱讀社區Wiki答案后, 除了XHTML自包含標簽 ,我才意識到,用正則表達式解析HTML的誘惑是邪惡的Satan-產生(在進一步研究之后,我得出的結論是正則表達式可能對我沒有幫助)。

無論如何,如果有人可以我的方式提出一些想法,我將不勝感激。 先感謝您。

  • 在服務器端創建某種列表以跟蹤控件ID
  • 當您出於任何原因渲染頁面時,請將這些ID寫入腳本塊中(將其放入數組或其他內容)
  • 當您需要提交值時,可以使用javascript數組內容來引用控件。

您可能需要做更多的工作才能找到您的實際值。 對於engragistics的花式褲控件,它們提供了一種特殊的方法來獲取有關“控件”整體的信息。 rad控件可能有類似的東西。

好的,所以我最終得出的答案並不是很雄辯,但它是100%可靠的,而且全部在客戶端(這很好,因為我的公司將IE7作為其標准Web瀏覽器x_x)。

我能夠擺脫一堆$ find命令和if語句,因為我不再需要搜索特定的HTML id。

        function SelectedIndexChanged(sender,eventArgs)
        {
            var rcbID = sender.get_id();
            var LocID = rcbID.substring(0,37) + "Locale";
            pastCombo = currentCombo;
            currentCombo = eventArgs.get_item().get_text();

            if(editedRow != null)
            {
                var Location = $find(LocID);

由於ID並不是在服務器端生成的(據我所知,盡管我承認我沒有嘗試過Roatin的解決方案,因為我在看到他的答案之前就已經考慮過我的問題了,因為我已經在做一個一堆JavaScript客戶端),我環顧四周,看看已經得到了什么,並意識到var rcbID = sender.get_id(); 已經為我提供了與我一直在尋找的價值極其相似的價值(只是不說SunLocale,而是說SunActivity)。

因此,我想了一下,我可以將rcbID中的所有內容都substring(),然后將“ Locale”附加到該字符串中,然后在該字符串上運行$ find()命令,以獲取正確的RadComboBox。 事實證明它可行。 無論如何,盡管我最終找到了自己的解決方案,但我還是感謝你們調查我的問題。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM