1

私は次のJavascriptを持っています。'forin;を使用してmyCosts配列値の合計を計算しようとしています。ループしてからページに表示します。私はもうすぐそこにいると思います。

function enterFood() 
{ 
    var myFoods = new Array() 
    var myCosts = new Array() 

    for (i = 1; i <= 5; i++) 
    { 
        myFoods[i] = prompt("Enter name of Food",""); 
        myCosts[i] = parseFloat(prompt("Enter cost of food","")); 
        document.getElementById("cost").innerHTML += i + ". " + myFoods[i] + ". Cost: £" + myCosts[i] + "<br />"; 
    } 

    for (var i in myCosts) 
    { 
        document.getElementById("total_cost").innerHTML =+ i; 
    } 
}  

私がこれを完了することができるように誰かが助けを提供できますか?

4

2 に答える 2

2

配列を正しく繰り返す必要があります。

var totalElement = document.getElementById("total_cost"),
    total_cost = parseFloat(totalElement.innerHTML);

for (var i = 0, len < myCosts.length; i < len; i++) {
    total_cost += myCosts[i];
}

totalElement.innerHTML = total_cost;
于 2013-02-11T12:47:23.893 に答える
2

forループのvar前にキーワードがありません。iそれがないiと、グローバル変数になります。また、配列リテラル表記()を使用すると、次のように、[]書き込みよりも短く/速く/クリーンになります。一般的なヒント...また、オブジェクトのメンバーを反復処理するために使用され、通常は配列をループ処理しないために使用されることに注意してください。new Array()myArray = []for (var ... in ...)

myBooksスクリプトの後半で配列と配列の値を使用しない場合は、myPricesここに配列は必要ありません。2つのループを組み合わせて、プロンプトから返された値をループ内の一時変数に保存できます。下記参照:

function enterFood()
{
    var total_cost = 0;
    for (var i = 1; i <= 5; i++)
    { 
        var name = prompt("Enter name of Food","");
        var cost = parseFloat(prompt("Enter cost of food","")); 
        document.getElementById("cost").innerHTML += i + ". " + name + ". Cost: £" + cost + "<br />";
        total_cost += cost;
    }
    document.getElementById("total_cost").innerHTML = total_cost;
}

さらに、コードを見るだけでいくつかのコメントがあります。

1) forループ内のvar前にキーワードがありません。iそれがないと、私はGLOBAL変数になります。

2) Javascriptでは、配列はオブジェクトであり、関数であるさまざまなプロパティがあります。配列リテラル表記(つまり)を使用すると、たとえば[]、書くよりもクリーン/短く、高速になります。new ArraymyArray = []

3) For-Inループは、オブジェクトのメンバーを反復処理するために使用され、通常、配列をループ処理するためには使用されません。For-Inループは、通常のループよりも低速です。配列を反復処理するために通常のループを使用したいとします。

4)myBooksスクリプトの後半で配列と配列の値を使用しない場合はmyPrices、ここに配列は必要ありません。2つのループを組み合わせて、プロンプトから返された値をループ内の一時変数内に保存できます。

編集:@Teemuによって修正されたように、ループiから引き上げられるため、グローバルにはなりません。for..in

于 2013-02-11T12:47:57.277 に答える