0

Chrome では機能するが Firefox では機能しない Jquery 関数があります。

この関数は、テキスト ボックスにデフォルト値を入力するために使用されます。クロムで正しく動作するため、コード ロジックは正しいです。

$('#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 は、 Firefox でサポートされていない ではなく、 W3C 準拠のtextContentプロパティを使用します。innerText

$('#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 を使用しているので、ブラウザー間の互換性を確保するために 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 に答える