2017-08-24 123 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的代码,了解他如何与变化事件抗争。 –