2017-10-01 21 views
-3

なぜこれは機能しませんか?別の関数を持つ関数から戻り値を取得できないのはなぜですか?

Var "i"はうまく動作し、返り値を見ることができます。ちょうどvar "i"を送信しようとしたときに、私は荒れているようです。 deor_viewerに送信

ボタン機能:

<div onclick="deor_viewer('deor','films_deor_ip_full_','1','.jpg')"></div> 

機能:

function deor_viewer(folder,name,id,ext) { 

    var x; 
    x = 'url(assets/images/films/'+ folder + '/' + name + id + ext; 

    document.getElementById("deor_ip_viewer_id").style.backgroundImage = x; 

    var i = id; 
    return i;                            

}; 

HTMLボタン・コールこの機能:

function viewer_right() { 
    var test = deor_viewer(); 
    alert(test); 
} 

alertちょうど "未定義" として起動します

それはreturndeor_viewer機能を使用すると、後でiに割り当て、それを返すidそのうちの1つは4つの引数を、期待しているためであるvar

+0

あなたのすべてのパラメータは 'id'を含むその呼び出しで定義されていないので、' i'変数もありますか? – Bergi

+0

_ "' return'が 'var'と一緒に送信されたときではありません" _ - それはどういう意味ですか? – Xufox

+0

助けてくれてありがとう。私は返す "こんにちは"のような堅い価値を持ってリターンを設定すれば、うまく動作します。アラートにはHelloが表示されます – NewCodeMan

答えて

3

に送られるだけではないとき、正常に動作します。

しかしidundefinedであり、それはあなたが戻って得るものですので、あなたは、あなたがそれに引数を渡していない(あなたのコードでを)その関数を呼び出すとき。

function deor_viewer(folder,name,id,ext) { 
 

 
    var x; 
 
    x = 'url(assets/images/films/'+ folder + '/' + name + id + ext; 
 

 
    document.getElementById("deor_ip_viewer_id").style.backgroundImage = x; 
 

 
    var i = id; 
 
    return i;                            
 

 
};
<div onclick="alert(deor_viewer('deor','films_deor_ip_full_','1','.jpg'))">click me</div> 
 

 
<hr/> 
 

 
<div id="deor_ip_viewer_id">element with id=deor_ip_viewer_id</div>

1

あなたは引数なしdeor_viewer関数を呼び出しているので、id引数がundefinedになり、あなたは変数iに代入して、それを戻ってきています。

1

あなたの関数deor_Viewerはうまくいきます。それは、関数のいずれにも何も渡していないので、あなたが他の関数を呼び出すときです。 &が関数内のそれらの値を参照することを期待している場合は、関数を呼び出すたびに値を渡す必要があります。

function deor_viewer(folder,name,id,ext) { 
 

 
     var x; 
 
     x = 'url(assets/images/films/'+ folder + '/' + name + id + ext; 
 

 
//document.getElementById("deor_ip_viewer_id").style.backgroundImage = x; 
 

 
     //var i = id; 
 
     console.log('id', id); 
 
     return id;                            
 

 
    }; 
 
    
 
    // like this: 
 
    function viewer_right(folder,name,id,ext) { 
 
     var test = deor_viewer(folder,name,id,ext); 
 
     alert(test); 
 
    } 
 

 
    // then call it the same way 
 
<div onclick="deor_viewer('deor','films_deor_ip_full_','1','.jpg')">deor_viewer</div> 
 
<div onclick="viewer_right('deor','films_deor_ip_full_','1','.jpg')">viewer_right</div>

それはあなたがviewer_rightを通じてagrumentsを渡す

// like this: 
function viewer_right(folder,name,id,ext) { 
    var test = deor_viewer(folder,name,id,ext); 
    alert(test); 
} 

// then call it the same way 
<div onclick="viewer_right('deor','films_deor_ip_full_','1','.jpg')">DIV</div> 

だから、あなたはこれで終わるのパラメータ、で更新する必要があり、このとdeor_viewerにします

関連する問題