変数を返す関数を作成しようとしています。 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()
});
:
は、だから私は何をしたか、このです。 私は何が間違っていますか?
大変助かりました!
何をしようとしていることは本当に意味がありません。 URLは、選択オプションが変更されたときにのみ決定されます。あなたは検索*内部の "変更"ハンドラを実行する必要があります。 – Pointy
関数ストアから値を返す場合は、それを変数に格納します。例:var x = setSearchUrl(); liveSearch(x)を引数として渡すことで、それをさらに使うことができます –
@Pointy:まさにそのアイデアです。誰かが検索語を入力してから(selectを使用して)カテゴリを選択すると、それらの値に基づいて作成されたURL文字列が存在するはずです。 'liveSearch()'はそのURLに基づいて実際の検索を行います。さもなければ、私たちが欲しくないときでさえ毎回検索がトリガーされます。それともあなたの答えを正しく理解していないのですか? – Meules