javascript - getElementsByClassName 不适用于 firefox

标签 javascript firefox

我试图打印一份年度报告,但我需要更改页面周围的 2 个文本,其中一个只有一个类属性。我是 js 的新手,所以我做了这个。

<div id="formBusqPresElec:dtResBSPE_paginator_bottom" class="ui-paginator ui-paginator-bottom ui-widget-header">
    <span class="ui-paginator-current">Mostrando 1-20 de 1626 registros</span> 
</div>

另一个有一个id。

<div id="fBusqSPE">Mostrando 20 de 1626 registros</div>

我让它在 Chrome 上运行

function imprimir() {
    var oldText = document.getElementById('fBusqSPE').innerText;
    document.getElementById('fBusqSPE').innerText = document.getElementsByClassName('ui-paginator-current')[0].innerText;
    window.print();
    document.getElementById('fBusqSPE').innerText = oldText;
}

但是在 firefox 中抛出

[10:48:48.330] TypeError: document.getElementsByClassName(...)[0] is undefined

编辑:所以让我解释更多。

实际上我在 2 个 iframe 中工作,第一个用于菜单,另一个用于更多选项。然后中央 iframe 用于显示实际报告。 也许我必须定义要检索这些元素的 iframe。

最佳答案

这里有两个问题。第一个导致你的错误 document.getElementsByClassName(...)[0] is undefined 一旦克服,第二个是 Firefox does not support innerText

在 Firefox 中生成指定错误的唯一方法是页面上不存在具有指定类的元素。以下代码对此进行了演示

<div class="a-test"></div>
// on page load
document.getElementsByClassName("b-test")[0].innerHTML="Test"; 

JSFiddle:http://jsfiddle.net/UL2Xs/

如果您在运行上述 fiddle 时观察控制台,您会看到相同的错误。

您的 javascript 是否可能在页面加载完成之前运行?

第二个也是更小的问题是 FireFox 不支持 innerText。您应该使用 .textContent 或可能使用 .innerHTML

关于javascript - getElementsByClassName 不适用于 firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474909/

相关文章:

Javascript:从 XML 文件获取值

javascript - Internet Explorer Javascript 语法错误

javascript - Angular 指令和 Controller 响应 ng-click 事件

macos - Chrome 中的 SVG strip

javascript - 隐藏在 Firefox 中的滚动条

javascript - 使用新的 SDK Firefox Addon 通过 Post 发送文件

html - Firefox 中的全尺寸 IFrame?

javascript - 使用响应状态以外的 API 确认成功

javascript - 在 JavaScript 中,命名函数是否优于匿名函数?

javascript - 使用 Google 脚本从 html 中抓取表格