我试图打印一份年度报告,但我需要更改页面周围的 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/