2017-08-24 95 views
-1

我試圖創建一個返回變量的函數。返回的變量我想在第二個函數中使用。jQuery創建變量以在其他函數中使用

我真的不能看到我在做什麼錯在這裏:

因此,我所做的是:

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() 

}); 

這將返回一個空searchUrl。 我在做什麼錯?

任何幫助非常感謝!

+2

什麼你正在試圖做的並沒有真正意義。只有在選擇選項被更改後纔會確定網址。你必須在「更改」處理程序中執行搜索*。 – 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>

希望,這個工程的ü.. :) :)

+0

'return searchUrl ='example.com/abc.php';'爲什麼searchUrl ='? –

+0

這不是必要的,只是設置一些值來顯示OP在另一個函數中使用由一個函數返回的變量的演示。 –

+0

反正你的示例沒有解釋引用變化的變量值的隱式/顯式方式。 - 查看OP的代碼,瞭解他如何與變化事件抗爭。 –

相關問題