我正在尝试打印一份报告,但我需要更改页面周围的两个文本,其中一个只有一个类属性。我是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>
另一个有身份证。
<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]是 未定义
编辑:所以让我解释一下。
实际上我在2个iframe中工作,第一个用于菜单,另一个用于更多选项。然后使用中央iframe显示实际报告。 也许我必须定义哪个iframe我想要检索这些元素。
答案 0 :(得分:3)
这里有两个问题。第一个导致您的错误为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/
如果您在运行上述小提琴时观看控制台,您将看到与您相同的错误。
在页面加载完成之前,您的javascript是否可能正在运行?
第二个也是一个小问题是FireFox不支持innerText
。您应该使用.textContent
或.innerHTML
。
答案 1 :(得分:1)
答案 2 :(得分:-2)
基本上.innerText
在FF中不起作用。 FF使用textContent
属性。
var text = element.textContent;
element.textContent = "this is some sample text";