0

時給計算機が機能しません。3 つの異なる数字を取得する必要がありますが、最初の 2 つの数字は表示されず、最後の数字は NaN です。助けてください。私が使用しているコードを以下に示します。

var hourly = $('#txtHourlyWage').val();
var fraction = hourly/60/60/10;
var calc = new Calculator();
function addCommas(str){
    return(str+"").replace(/\b(\d+)((\.\d+)*)\b/g,function(a,b,c){
        return(b.charAt(0)>0&&!(c||".").lastIndexOf(".")?b.replace(/(\d)(?=(\d{3})+$)/g,"$1,"):b)+c;
    });
}

$('#year-calculation').html(addCommas(Math.round(calc.annual/(hourly*calc.per_hour))) + ' years' );
$('#your-time').html( (((hourly*2080)/ calc.annual) * 52 * 5 * 8).toFixed(1) + " hours");

$('#txtHourlyWage').bind('keypress', function(e) { 
    if ($('#txtHourlyWage').length < 2) {
        return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
    } else {
        return false;
    }
    return
})

$('#txtHourlyWage').keyup(function (){

    $('#year-calculation').html(addCommas(Math.round(calc.annual/(hourly*calc.per_hour))) + ' years' );
    $('#your-time').html( (((hourly*2080)/ calc.annual) * 52 * 5 * 8).toFixed(1) + " hours");
    $('#HourlyWageOutput').html("At this rate, it would take you <span id=\"year-calculation\">&nbsp;</span> to earn his yearly income and <span id=\"your-time\">&nbsp;</span> for him to earn yours.");
});

このコードは以下を生成します。

このレートでは、あなたが彼の年収を稼ぎ、彼があなたの年収を稼ぐのにかかるでしょう。
NaN 時間

上記からわかるように、数値が欠落しているため、コードが生成したものは意味がありません。何が間違っているのかわかりません。助けてください。

4

1 に答える 1

1

keyupイベントに数字を設定していません。

次の行を配置する必要があります。

$('#year-calculation').html(addCommas(Math.round(calc.annual/(hourly*calc.per_hour))) + ' years' );
$('#your-time').html( (((hourly*2080)/ calc.annual) * 52 * 5 * 8).toFixed(1) + " hours");

の中にkeyup。そのままでは、おそらく計算する何かが存在する前に、オンロードで一度だけ起動されます。

再度編集: まだテストされていませんが、動作するはずです:

function addCommas(str){
    return(str+"").replace(/\b(\d+)((\.\d+)*)\b/g,function(a,b,c){
        return(b.charAt(0)>0&&!(c||".").lastIndexOf(".")?b.replace(/(\d)(?=(\d{3})+$)/g,"$1,"):b)+c;
    });
}

$('#txtHourlyWage').bind('keypress', function(e) { 
    if ($('#txtHourlyWage').length < 2) {
        return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
    } else {
        return false;
    }
    return;
});

$('#HourlyWageOutput').html("At this rate, it would take you <span id=\"year-calculation\">&nbsp;</span> to earn his yearly income and <span id=\"your-time\">&nbsp;</span> for him to earn yours.");

$('#txtHourlyWage').keyup(function (){

  var hourly = $(this).val();
  var fraction = hourly/60/60/10;
  var calc = new Calculator();

  $('#year-calculation').html(addCommas(Math.round(calc.annual/(hourly*calc.per_hour))) + ' years' );
  $('#your-time').html( (((hourly*2080)/ calc.annual) * 52 * 5 * 8).toFixed(1) + " hours");
});

もちろん、$('#HourlyWageOutput')HTML で既に定義されている場合は設定する必要はありません。

于 2012-10-15T00:06:13.700 に答える