2017-07-11 13 views
1

私はどのコーディングにも新しく、この問題が容易に検索されるようであれば申し訳ありませんが、ここで何を探すべきか分かりません。ファンクションと変数のリファクタリングが定義されていません

私がここでやろうとしているのはdivを作成し、それを「レベル」div(またはvarヘッダー)の直前に置くことです。次に、そのdivに画像を入れたいと思います。最終的に私はそこに3つのイメージを入れたいので、私はリファクタリングを少し試してみましたので、それは長い関数ではありません(私はこれがDRYではないと確信しています。 "medalDiv"が定義されていないため、以下のコードは機能しません。関数を呼び出す代わりにawardTimeMedal()からコードを挿入すると、正常に動作します。私はこれがスコープの問題であるかどうかは分かりませんが、awardTimeMedalがそれにアクセスできるようにawardMedal()でmedalDivが定義されているので、私は考えました。

​​

私は「return medalDiv」ステートメントなしで試してみました。

ありがとうございました。適切なエチケットを守らなかったとすみません。ご迷惑をおかけして申し訳ございません。

編集:それは意味があります。どうもありがとう。

答えて

0

var medalDivはawardMedalローカルで、awardTimeMedalで使用されています。グローバルスコープでアクセスできるようにします。 awardTimeMedalmedalDiv

Iの信念へのアクセス権を持っていないため

-1

あなたの最初の機能が動作しない主な理由は、より良いアプローチは、私がきたもののように、awardTimeMedal要素を返すとawardMedal機能でそれを追加することですです以下に行わ:

function awardMedal(){ 
    var medalDiv = document.createElement("div"); 
    var timeMedal = awardTimeMedal(); 
    medalDiv.appendChild(timeMedal); 

    var header = document.getElementById("level"); 
    header.insertBefore(medalDiv, header.childNodes[0]); 
} 

function awardTimeMedal(){ 
    var timeMedal = document.createElement("img"); 
    timeMedal.src = properties.MEDAL_OFF; 
    timeMedal.className = "medals"; 
    return timeMedal; 
} 
0

更新前の機能

function awardMedal(){ 
    var medalDiv = document.createElement("div"); 
    awardTimeMedal(medalDiv); 
    var header = document.getElementById("level"); 
    header.insertBefore(medalDiv, header.childNodes[0]); 

} 

function awardTimeMedal(medalDiv){ 
    var timeMedal = document.createElement("img"); 
    timeMedal.src = properties.MEDAL_OFF; 
    timeMedal.className = "medals"; 
    medalDiv.appendChild(timeMedal); 
    return medalDiv; 
} 
0

問題は、awardTimeMedal()を呼び出すときに、呼び出しプロセスからアクセスできるように、戻り値を変数に格納する必要があることです。つまり、awardMedal()です。したがって、

var ref = awardTimeMedal(); 

ここで、refを使用して正しい要素を追加できます。 FYIでは、varキーワードまたはfunctionキーワードを使用するたびに、JavaScriptで新しいレキシカルスコープを作成します。これは、現在のスコープが新しく導入されたスコープと厳密に結びついていることを意味します。そのスコープ内の変数または参照にアクセスしようとすると、コンパイラーはそのスコープのスタックを調べ、参照された変数が見つからない場合は親スコープで調べます。通常、親スコープは明示的に保護されていない場合、ドキュメントに解決します。

関連する問題