Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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_Jquery - Fatal编程技术网

Javascript-从函数调用变量

Javascript-从函数调用变量,javascript,jquery,Javascript,Jquery,我有这个单选按钮,如果选中,我希望它显示两个警报(item=“shoes”),一个来自本地,另一个来自全局,警报只显示一个表示变量在全局上仍然为空 /*空项*/ var项目=“”; /*功能选择项*/ 功能选择(选择){ var项目=选择; 警报(项目); } /*如果选择了单选按钮,则显示项目='shoes'*/ $('input[name=“selection”]”)。单击(函数(){ 如果($(this).is(':checked')){ 选择(“鞋”); } }); /*如果项目不为空

我有这个单选按钮,如果选中,我希望它显示两个警报(item=“shoes”),一个来自本地,另一个来自全局,警报只显示一个表示变量在全局上仍然为空

/*空项*/
var项目=“”;
/*功能选择项*/
功能选择(选择){
var项目=选择;
警报(项目);
}
/*如果选择了单选按钮,则显示项目='shoes'*/
$('input[name=“selection”]”)。单击(函数(){
如果($(this).is(':checked')){
选择(“鞋”);
}
});
/*如果项目不为空,则发出警报*/
如果(项目!=''){
警报(项目);/*不工作*/
}


Shoes
您已经声明了两次变量

var item= ''; 
还有你的功能。所以把你的函数改为

function selection(select) {
  item = select;
  alert(item);
  if (item !== '') {
    alert(item); /*NOT WORKING*/
  }
}

第二个问题是,在单击事件之后,警报将永远不会到达。所以把它移到函数中


这里是小提琴:

您已经声明了两次变量

var item= ''; 
还有你的功能。所以把你的函数改为

function selection(select) {
  item = select;
  alert(item);
  if (item !== '') {
    alert(item); /*NOT WORKING*/
  }
}

第二个问题是,在单击事件之后,警报将永远不会到达。所以把它移到函数中


这里是提琴:

您应该在单击处理程序函数中有警报。另外,不要在函数内重新声明变量
,这将创建一个作用域为函数的全新变量:

/*空项*/
var项目=“”;
/*功能选择项*/
功能选择(选择){
项目=选择;
警报(项目);
}
/*如果选择了单选按钮,则显示项目='shoes'*/
$('input[name=“selection”]”)。单击(函数(){
如果($(this).is(':checked'){
选择(“鞋”);
}	
/*如果项目不为空,则发出警报*/
如果(项目!=''){
警报(项目);/*不工作*/
}
});


Shoes
您应该在click handler函数中具有警报。另外,不要在函数内重新声明变量
,这将创建一个作用域为函数的全新变量:

/*空项*/
var项目=“”;
/*功能选择项*/
功能选择(选择){
项目=选择;
警报(项目);
}
/*如果选择了单选按钮,则显示项目='shoes'*/
$('input[name=“selection”]”)。单击(函数(){
如果($(this).is(':checked'){
选择(“鞋”);
}	
/*如果项目不为空,则发出警报*/
如果(项目!=''){
警报(项目);/*不工作*/
}
});


鞋子

虽然这将解决你的问题,但我敦促你考虑一下一种不涉及全局状态的方法。

有两个问题。首先,您在函数中重新声明了
变量,因此您有一个更改的本地副本,而不是全局副本。第二,您没有在更改侦听器中检查是否为空,而只是在启动时检查

更好的缩进可能会把这一点说清楚

/*空项*/
var项目=“”;
/*功能选择项*/
功能选择(选择){
项目=选择;
警报(项目);
}
/*如果选择了单选按钮,则显示项目='shoes'*/
$('input[name=“selection”]”)。单击(函数(){
如果($(this).is(':checked')){
选择(“鞋”);
}	
/*如果项目不为空,则发出警报*/
如果(项目!=''){
提醒(项目);/*现在工作,因为它在正确的位置*/
}           
});


鞋子

虽然这将解决你的问题,但我敦促你考虑一下一种不涉及全局状态的方法。

有两个问题。首先,您在函数中重新声明了
变量,因此您有一个更改的本地副本,而不是全局副本。第二,您没有在更改侦听器中检查是否为空,而只是在启动时检查

更好的缩进可能会把这一点说清楚

/*空项*/
var项目=“”;
/*功能选择项*/
功能选择(选择){
项目=选择;
警报(项目);
}
/*如果选择了单选按钮,则显示项目='shoes'*/
$('input[name=“selection”]”)。单击(函数(){
如果($(this).is(':checked')){
选择(“鞋”);
}	
/*如果项目不为空,则发出警报*/
如果(项目!=''){
提醒(项目);/*现在工作,因为它在正确的位置*/
}           
});

如果要“将变量从局部范围转移到全局范围”,请使用return

var项=”;
功能选择(选择){
var项目=选择;
警报(项目);
return item;//如果要“将变量从局部范围转移到全局范围”,请使用return

var项=”;
功能选择(选择){
var项目=选择;
警报(项目);

return item;//首先,javascript是在页面加载时运行的。因此,您在item变量中设置了
var item='';
empty值,并在下面进行了检查

if (item != '') {
      alert(item); /*NOT WORKING*/
    }
此代码。在加载页面上,将执行所有脚本,包括下面的代码

if (item != '') {
      alert(item); /*NOT WORKING*/
    }
因此,检查单选按钮后,上述代码未运行

但是,我们可以像下面这样做,请接受

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<input type="radio" name="selection" id="shoes" value="shoes">Shoes<br>

<script type="text/javascript">
    /*Empty item*/
    var item = '';

    /*Function selection item*/
    function selection(select) {
      item = select;
      alert(item);
      sample();
    }

    function sample() {
        alert(item);
    }

    /*If radio button selected item='shoes'*/
    $('input[name="selection"]').click(function() {
      if ($(this).is(':checked')) {
        selection('shoes');
      }
    });
</script>

鞋子
/*空项*/ var项目=“”; /*功能选择项*/ 功能选择(选择){ 项目=选择; 警报(项目); 样本(); } 函数示例(){ 警报(项目); } /*如果选择了单选按钮,则显示项目='shoes'*/ $('input[name=“selection”]”)。单击(函数(){ 如果($(this).is(':checked')){ 选择(“鞋”); } });
首先,javascript是在页面加载时运行的。因此,您在item变量中设置了
var item='';
空值,并在下面进行了检查

if (item != '') {
      alert(item); /*NOT WORKING*/
    }
此代码。在加载页面上,将执行所有脚本,包括下面的代码

if (item != '') {
      alert(item); /*NOT WORKING*/
    }
因此,检查单选按钮后,上述代码未运行

但是,我们可以像下面这样做,请接受

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<input type="radio" name="selection" id="shoes" value="shoes">Shoes<br>

<script type="text/javascript">
    /*Empty item*/
    var item = '';

    /*Function selection item*/
    function selection(select) {
      item = select;
      alert(item);
      sample();
    }

    function sample() {
        alert(item);
    }

    /*If radio button selected item='shoes'*/
    $('input[name="selection"]').click(function() {
      if ($(this).is(':checked')) {
        selection('shoes');
      }
    });
</script>

鞋子
/*空项*/ var项目=“”; /*功能选择项*/ 功能选择