2017-08-24 7 views
-1

変数を返す関数を作成しようとしています。 2番目の関数で使用したい変数が返されました。jQueryは他の関数で使用する変数を作成します

私は本当に私がここで間違ってやっているものを見ることができない:これは、空のsearchUrl返し

function setSearchUrl(searchUrl){ 
    var $select = $('.navbar-form.navbar-search select'); 
    $select.on('change', function(){ 
     searchUrl = $(this).find('option:selected').val(); 
     $(this).closest('form').attr("action", searchUrl); 
    }); 
    return searchUrl; 
} 

function liveSearch() { 

var e = $(".navbar-search input").val(), 
query = e.replace("/", "-slash-"), 
url = setSearchUrl(searchUrl) +'/?search=' + query + "&format=json" 


    $.getJSON(url, function(e) { 
     // etc etc etc .... 

} 

$(function() { 

    var searchUrl; 
    setSearchUrl() 

}); 

は、だから私は何をしたか、このです。 私は何が間違っていますか?

大変助かりました!

+2

何をしようとしていることは本当に意味がありません。 URLは、選択オプションが変更されたときにのみ決定されます。あなたは検索*内部の "変更"ハンドラを実行する必要があります。 – Pointy

+0

関数ストアから値を返す場合は、それを変数に格納します。例:var x = setSearchUrl(); liveSearch(x)を引数として渡すことで、それをさらに使うことができます –

+0

@Pointy:まさにそのアイデアです。誰かが検索語を入力してから(selectを使用して)カテゴリを選択すると、それらの値に基づいて作成されたURL文字列が存在するはずです。 'liveSearch()'はそのURLに基​​づいて実際の検索を行います。さもなければ、私たちが欲しくないときでさえ毎回検索がトリガーされます。それともあなたの答えを正しく理解していないのですか? – Meules

答えて

0

これは簡単です。ただ、ただ、デモのために...コードの下に

をチェック - 選択値のURLに基​​づいて

は、Ajaxリクエストを送信するために、動的に生成されます。

function setSearchUrl(selVal) { 
 
    let searchUrl = selVal; 
 
    return searchUrl; 
 
} 
 

 
function liveSearch(searchUrl) { 
 
    console.log(searchUrl); 
 
    /* 
 
    \t Your code for ajax request 
 
    */ 
 
} 
 

 
$(function() { 
 
    $('#select').on('change', function() { 
 
    let selValue = $(this).val(); 
 
    if (selValue !== '') { 
 
     let searchUrl = setSearchUrl(selValue); 
 
     liveSearch(searchUrl); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id='select'> 
 
    <option value=''>Select URL</option> 
 
    <option value='example.com/abcd.php'>URL1</option> 
 
    <option value='example.com/pqrs.html'>URL2</option> 
 
    <option value='example.com/wxyz.asp'>URL3</option> 
 
</select>

希望、これはuのために働く.. :) :)

+0

'return searchUrl = 'example.com/abc.php';'なぜ 'searchUrl ='? –

+0

別の関数で1つの関数から返された変数をOPのデモとして表示するには、値を設定するだけです。 –

+0

とにかく、あなたの例では、変化する変数値を参照する暗黙的/明示的な方法については説明していません。 - 彼が変更イベントでどのように苦労しているかを見るには、OPのコードを参照してください。 –

関連する問題