IE 与 FireFox 中的 Java 脚本错误
Java Script Errors in IE Vs FireFox?
我使用以下脚本从HTML表中获取值.如果我使用innerText,它将在IE和Chrome Fine上运行.但是FireFox显示错误:row.cells[0].innerText is undefined Source.如果我使用textContent,它将在Chrome和FireFox中正常工作,但IE显示以下错误单元格.0.textContent'为空或不是对象。如何更改此脚本在IE,Chrome,FireFox上工作而没有错误?我使用 c= row.cells[0].innerText.strip();或 c=row.cells[0].textContent.strip();
function a()
{
var table = getServerObject("b");
var row,c;
for (var i = 2; i < table.rows.length - 1; i++)
{
row = table.rows[i];
if(row.cells.length==1)continue;
c= row.cells[0].innerText.strip(); //It was work in chrome and IE (or)
c=row.cells[0].textContent.strip();//It was work in chrome and FF
if(c==0)
{
//Something
}
}
}
属性之前进行测试:
var contentEnabled = document.textContent === null;
稍后你有一个if来决定使用哪个属性
if ( contentEnabled ) {
c= row.cells[0].textContent.strip(); // It was work in chrome and FF
} else {
c= row.cells[0].innerText.strip(); // It was work in chrome and IE
}
或按照@RobW的建议更短
c = row.cells[0][contentEnabled ? 'textContent' : 'innerText'].strip();
对于这两个属性之间的细微差异,请注意以下来自 MDN 文档的 textContent
:
与内部文本的区别
IE浏览器
element.innerText
推出 .意图几乎相同,但有几个不同之处:请注意,虽然
textContent
获取所有元素(包括<script>
和<style>
元素)的内容,但大多数等效的特定于 IE 的属性innerText
不会。innerText
也知道样式,不会返回隐藏元素的文本,而textContent
会。 由于innerText
知道CSS样式,它将触发重排,而textContent
不会。
function a()
{
var table = getServerObject("b");
var row,c;
for (var i = 2; i < table.rows.length - 1; i++)
{
row = table.rows[i];
if(row.cells.length==1)continue;
if(typeof (row.cells[0]) != "undefined"){
c= row.cells[0].innerText.strip(); //It was work in chrome and IE (or)
c=row.cells[0].textContent.strip();//It was work in chrome and FF
if(c==0)
{
//Something
}
}
}
}
如果你真的想要一种跨浏览器的方式(IE<9),请使用jQuery。说真的,你会花在这些怪癖上的时间少得多。
根据它的灵感,你可以像它一样做:使用nodeValue
,唯一的跨浏览器方式。但是,nodeValue
不适用于元素,但它确实适用于textNodes
(它适用于哪些元素的完整列表)。
function getText( el ) {
var text = '';
// Recursively get the text
( function recur( el ) {
// If it's a textNode or a CDATA node
if ( el.nodeType === 3 || el.nodeType === 4 ) {
text += el.nodeValue;
}
// If it has childNodes, recursively get their nodeValue
if ( el.hasChildNodes() ) {
for ( var i = 0, l = el.childNodes; i < l; i++ ) {
recur( el.childNodes[ i ] );
}
}
} () );
return text;
}
用法:
getText( row.cells[0] );
如果你不关心差异(innerText
和textContent
不返回相同的输出,更不用说它得到了哪些元素,还有 textNode 的差异)并且只是想要一个快速的解决方案,请使用这个:
function getText( el ) {
if ( 'textContent' in el ) return el.textContent;
else return el.innerText;
}
- java脚本的数学方程显示错误的答案
- Java脚本函数错误
- Java脚本,需要帮助查找我的错误
- java脚本错误对象没有'不支持此属性或方法
- Java脚本返回错误值
- 解析格式错误的 json 字符串,该字符串周围没有双引号(Java 脚本)
- Java脚本错误-can't将未定义转换为对象
- Java 脚本数组分配错误
- IE 与 FireFox 中的 Java 脚本错误
- Mozilla 中的 Java 脚本未定义错误
- 将 jQuery 引用移动到 asp.net 母版页时出现 Java 脚本错误
- IE 10 上带有 jquery 工具提示的 java 脚本错误
- 条件语句中的java脚本错误
- Java 脚本错误:意外的令牌
- 意外的Java脚本错误
- 必应地图Web部件(Java脚本错误)
- 日期选择器javascript和电子邮件检查ajax java脚本错误
- 如何修复这个java脚本错误处理单引号在行
- Java脚本错误在行:36,char:3,错误:对象预期,代码:0,URL:http:localhost:6741/
- 在IE11中出现Java脚本错误,但在IE9中运行正常