簡體   English   中英

document.getElementsByName在IE11中不能正常運行,但在IE8中可以正常運行嗎?

[英]document.getElementsByName not working in IE11 but working good in IE8?

在IE11中,document.getElementsByName無法正常工作。

var colRadioButtonSelected = document.getElementsByName("radioButtonSelected_" + containerCurrencyCode);

var colLabelNetDollarsDue = document.getElementsByName("labelNetDollarsDue_" + containerCurrencyCode);

var colLabelUSDAmount = document.getElementsByName("labelUSDAmount_" + containerCurrencyCode); 
            for(var x=0; x < colRadioButtonSelected.length; x++)
            {      
                colRadioButtonSelected[x].disabled = readOnly ? "disabled" : ""; 
                var textNetDollarsDue = colLabelNetDollarsDue[x].innerText;

調試了代碼,看到document.getElementsByName部分在IE版本中返回了不同類型的值。

在此處輸入圖片說明

嘗試過如下所示的包裝器,但沒有為我工作。 有幫助嗎?

function getElementsByNameWrapper(name) {
  a = new Array();

  for (var i = 0; i < document.getElementsByName(name).length; ++i) {
    a.push(document.getElementsByName(name)[i]);
  }

  return a;
}

已更改為

var textNetDollarsDue = colLabelNetDollarsDue[x].textContent ||
    colLabelNetDollarsDue[x].innerText;

錯誤看起來像

在此處輸入圖片說明

HTML標記如下所示。

<asp:Repeater ID="ReportRepeater" runat="server" OnItemDataBound="ReportRepeater_ItemDataBound">
                                            <ItemTemplate>
                                                <tr class="<%# OddEven("odd", "even") %>">
                                                    <td align="center"><input type="radio" id="radioButtonSelected_<%# ((ReportEntity)Container.DataItem).BaseCurrency %>" name="radioButtonSelected_<%# ((ReportEntity)Container.DataItem).BaseCurrency %>" disabled="disabled" style="visibility: <%# (string.IsNullOrEmpty(((ReportEntity)Container.DataItem).SecurityNumber) || string.IsNullOrEmpty(((ReportEntity)Container.DataItem).CusipNumber)) ? "hidden" : "" %>;" value="<%# ((ReportEntity)Container.DataItem).IncomeReportId %>" /></td>
                                                    <td align="center"><%# ((ReportEntity)Container.DataItem).IncomeStatus %></td>
                                                    <td align="left"><%# String.Format("{0:d}", ((ReportEntity)Container.DataItem).AllocationDate) %></td>
                                                    <td align="center"><%# ((ReportEntity)Container.DataItem).SedolNumber %></td>
                                                    <td align="center"><%# ((ReportEntity)Container.DataItem).IsinNumber %></td>
                                                    <td align="center"><%# ((ReportEntity)Container.DataItem).ReportEvent %></td>
                                                    <td align="center"><%# ((ReportEntity)Container.DataItem).ReferenceNumber %></td>
                                                    <td align="left"><%# String.Format("{0:d}", ((ReportEntity)Container.DataItem).RecDate) %></td>
                                                    <td align="left"><label id="labelPayDate_<%# ((ReportEntity)Container.DataItem).BaseCurrency %>"><%# String.Format("{0:d}", ((ReportEntity)Container.DataItem).PayDate) %></label></td>
                                                    <td align="right"><%# String.Format("{0:#,##}",((ReportEntity)Container.DataItem).Quantity) %></td>
                                                    <td align="right"><%#  ((ReportEntity)Container.DataItem).BaseRate %></td>
                                                    <td align="right"><label id="labelNetDollarsDue_<%# ((ReportEntity)Container.DataItem).BaseCurrency %>"><%# Formatting.FormatCurrency(((ReportEntity)Container.DataItem).NetDollarsDue).Replace("$","")%></label></td>
                                                    <td align="center"><label id="labelUSDAmount_<%# ((ReportEntity)Container.DataItem).BaseCurrency %>"></label></td>
                                                    <td align="center">&nbsp;</td>
                                                    <td style="width:120px" align="center"><a id="Details" runat="server" >Show Details</a></td>                                    
                                                </tr>  

您的問題與.getElementsByName()無關。 問題是IE11支持標准.textContent而不是舊的(非標准) .innerText

您可以使用以下任一版本進行解釋:

 var textNetDollarsDue = colLabelNetDollarsDue[x].textContent ||
    colLabelNetDollarsDue[x].innerText;

編輯 -上面的內容是正確的(盡管IE11可能仍然理解.innerText ),但是在張貼您的標記后,現在很清楚,問題是您正在使用ByName() API,但是您對“ id”確實很感興趣值。 您可以為這些標簽使用類名而不是“ id”。 標記對於所有重復的“ id”值仍然無效。

暫無
暫無

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

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