Reputation: 1158
In IE11 document.getElementsByName is not working as expected.
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;
Have debugged the code and seen document.getElementsByName section is returning different type of value in IE versions.
Have tried a Wrapper like below but didn't worked for me . Any Help?
function getElementsByNameWrapper(name) {
a = new Array();
for (var i = 0; i < document.getElementsByName(name).length; ++i) {
a.push(document.getElementsByName(name)[i]);
}
return a;
}
Have changed to
var textNetDollarsDue = colLabelNetDollarsDue[x].textContent ||
colLabelNetDollarsDue[x].innerText;
Error looks like
HTML markup is something like below ..
<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"> </td>
<td style="width:120px" align="center"><a id="Details" runat="server" >Show Details</a></td>
</tr>
Upvotes: 1
Views: 3636
Reputation: 413709
Your problem has nothing to do with .getElementsByName()
. The issue is that IE11 supports the standard .textContent
instead of the old (non-standard) .innerText
.
You can account for either version like this:
var textNetDollarsDue = colLabelNetDollarsDue[x].textContent ||
colLabelNetDollarsDue[x].innerText;
edit — the above is sort-of true (though IE11 may still understand .innerText
) but with your markup posted it's now clear that the problem is that you're using the ByName()
API but you're really interested in "id" values. You can use a class name instead of an "id" for those labels; the markup is invalid with all those duplicated "id" values anyway.
Upvotes: 1