1

「.total」入力フィールドの onBlur ページのすべての時間を合計する関数 (以下を参照) があります。この関数は FF では完全に機能しますが、Chrome と Safari では次のエラーが発生します: SyntaxError: Unexpected EOF --- 調査を行いましたが、原因がわかりません。

助けてくれてありがとう!

function totalUpHours() {
    //add all values to an array
    var hrsTotalsarr = new Array();
    $('.total').each(function() {
        var thisTotal = $(this).val();
        //clean the value
        if (thisTotal == "HRS") {
            thisTotal = 0;
        }
        hrsTotalsarr.push(thisTotal);
    });

    //sum up the array
    var hrsTotal = eval(hrsTotalsarr.join('+'));
    $('#taskHRStotals').val(hrsTotal);
}
4

2 に答える 2

1

Web サイトからコードをコピーして貼り付けると、無効な文字がコードに取り込まれることがあります。

残念ながら、それらは目に見えないことが多く、キーボードの矢印キーを使用してカーソルを上に移動する場合にのみ気付くことができます. 無効なものに到達すると、カーソルは 1 回のキーストロークで一時停止します。


それとは別にeval()、コードで使用する代わりにこの代替案を検討してください。

function totalUpHours() {

    var hrsTotal = $('.total').map(function() {
                                     var thisTotal = $(this).val();

                                     return thisTotal == "HRS" ? 0 : thisTotal;
                                   })
                              .toArray()
                              .reduce(function(total, n) {
                                  return total + n;
                              }, 0);

    $('#taskHRStotals').val(hrsTotal);
}

これは と呼ばれmap/reduce、知っておくと非常に便利なパターンです。

于 2012-09-24T20:32:29.213 に答える
0

それは働いているようです。クロムでテストしました。

参考までに、LIVE DEMOを参照してください。

HTML:

<input type="text" class="total" value="1" />
<input type="text" class="total" value="2" />
<input type="text" class="total" value="3" />
<input type="text" id="taskHRStotals" value="0" />

JS

totalUpHours();

function totalUpHours(){
    //add all values to an array
    var hrsTotalsarr = new Array();
    $('.total').each(function() {
        var thisTotal = $(this).val();
        //clean the value
        if(thisTotal=="HRS"){
            thisTotal=0;}
        hrsTotalsarr.push(thisTotal);
    });

    //sum up the array
    var hrsTotal = eval(hrsTotalsarr.join('+'));
    $('#taskHRStotals').val(hrsTotal);
}​

​
于 2012-09-24T20:02:16.247 に答える