gpt4 book ai didi

javascript - document.getElementsByName 在 IE11 中不起作用,但在 IE8 中运行良好?

转载 作者:行者123 更新时间:2023-11-28 00:02:21 25 4
gpt4 key购买 nike

在 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 版本中返回不同类型的值。

enter image description here

尝试过如下所示的包装器,但对我不起作用。有什么帮助吗?

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;

错误看起来像

enter image description here

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”值都是无效的。

关于javascript - document.getElementsByName 在 IE11 中不起作用,但在 IE8 中运行良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com