0

我有一个 Jquery 函数,它在 Chrome 中有效,但在 Firefox 中无效,有谁知道,出了什么问题?

此函数用于使用默认值填充文本框。代码逻辑是正确的,因为它在 chrome 中可以正常工作。

$('#filler').change(function(){
//Logic here    
var Row = document.getElementById("node-0");
var Cells = Row.getElementsByTagName("td");
var size=(Cells[2].innerText);
var chr=document.getElementById("filler").value;    
var fillertxt="";
for (var i=0;i<size;i++)
{
  fillertxt+=chr+chr+" ";
}       
if(!/[0123456789abcdef]/ig.test(chr))
    {
         alert("Do use Hexadecimal characters!");   
    }
    else
    {
        $('#input').val(fillertxt);
    }
});
4

2 回答 2

3

Firefox 使用 W3C 兼容的textContent属性,而不是innerTextFirefox 不支持的属性。

$('#filler').change(function(){
    //Logic here
    var Row   = $("#node-0"),
        Cells = Row.find("td"),
        size  = parseInt(Cells.eq(2).text(), 10),
        chr= $("#filler").val(),
        fillertxt="";

    for (var i=0; i < size ; i++) {
      fillertxt+=chr+chr+" ";
    }

    if(!/[0123456789abcdef]/ig.test(chr)) {
         alert("Do use Hexadecimal characters!");   
    }else{
         $('#input').val(fillertxt);
    }
});

此外,您似乎正在尝试在for循环中使用字符串作为迭代次数。您需要将其解析为数字,或者如果它是字符串长度,请使用length?

于 2013-02-22T12:58:33.833 回答
0

由于您已经在使用 jQuery,您不妨一直使用它来确保跨浏览器兼容性。还要确保调用.change内部文档准备功能(这$(function(){...}) 将确保)

$(function(){
    $('#filler').change(function(){
      var size = parseInt($("#node-0 td:nth-child(3)").text(),10),
          chr = $(this).val(),
          fillertxt="";

      for (var i=0;i<size;i += 1) {
        fillertxt+=chr+chr+" ";
      }

      if(!/[0123456789abcdef]/ig.test(chr)) {
        alert("Do use Hexadecimal characters!");   
      } else {
        $('#input').val(fillertxt);
      }
    });
});
于 2013-02-22T12:55:42.247 回答