Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从另一个函数获取值_Javascript_Rest_Onclick - Fatal编程技术网

Javascript 从另一个函数获取值

Javascript 从另一个函数获取值,javascript,rest,onclick,Javascript,Rest,Onclick,我有27个按钮(A-Z和所有按钮),需要传递值以过滤REST API(即,如果单击“A”按钮,则带有姓氏的过滤器列表以“A”开头,以此类推) 以下是我当前的HTML标记: <div id="btnPDContainer"> <button class="btnPD active" type="button" onclick="myFilter('All', this)"><i class="fas fa-users"></i></button

我有27个按钮(A-Z和所有按钮),需要传递值以过滤REST API(即,如果单击“A”按钮,则带有姓氏的过滤器列表以“A”开头,以此类推)

以下是我当前的HTML标记:

<div id="btnPDContainer">
<button class="btnPD active" type="button" onclick="myFilter('All', this)"><i class="fas fa-users"></i></button>
<button class="btnPD" type="button" onclick="myFilter('A', this)">A</button>
<button class="btnPD" type="button" onclick="myFilter('B', this)"">B</button>
<button class="btnPD" type="button" onclick="myFilter('C', this)"">C</button>
<button class="btnPD" type="button" onclick="myFilter('D', this)"">D</button>
<button class="btnPD" type="button" onclick="myFilter('E', this)"">E</button>
</div>

如果我在函数中插入控制台日志,它可以工作,但是如果我在REST API中使用变量
filterByValue
,它就不工作。如果我将它放在外部,就像上面一样,它会给出
未定义的
错误。

单击按钮后myFilter函数运行,但是console.log将在代码到达它时立即运行。因此,只要t程序run console.log打印最初未定义的变量值。从onclick函数调用另一个函数,该函数打印变量值

var-filterByValue;
var myFilter=函数(值,对象){
object.innerHTML=值;
filterByValue=值;
a();
};
函数a()
{
console.log(filterByValue);
}

A.
B
C
D
E

好好想想……conse.log行在函数运行之前运行。之后的代码不会等待函数被调用……控制台行需要位于函数内部……这我不知道。但是@ellipsis对其进行了精彩的解释。感谢您提供了非常有帮助的注释。我现在理解了它的工作原理。
var filterByValue;
var myFilter = function(value, object) { 
    object.innerHTML = value; 
    filterByValue = value;
};
console.log(filterByValue);