注册 登录
编程论坛 ASP技术论坛

怎样将内部函数得到的值传递给外部函数变量

ibm888 发布于 2012-07-12 09:46, 1363 次点击
<script type="text/javascript">
 function Str(){
  var temp_s;
   var selName = null;
var inputs = document.getElementsByTagName("input");
 for( var i = 0; i < inputs.length; i++ ){
  if( inputs[i].type == "text" ){
   inputs[i].onchange= function(){
    var temp_s1;
    var temp_t1;
    selName = this.name;  //得到焦点(当前文本框)的名字
  temp_s1 = document.getElementById(selName).value;
  temp_s=temp_s1
}
alert(temp_s)
}
}
 }
</script>
这样写会提示红色部分未定义,请问如何能将内部得到的temp_s1传递到外部函数变量temp_s
12 回复
#2
cnfarer2012-07-12 10:08
将var temp_s;这行去年就行了
#3
coretear2012-07-12 12:38
外部声明
#4
ibm8882012-07-13 14:51
去掉不行 放到function之前也不行
如果var temp_s提示undefined 如果没有var temp_s 则提示temp_s未定义
 

[ 本帖最后由 ibm888 于 2012-7-13 14:59 编辑 ]
#5
coretear2012-07-13 18:11
好多天没来了 给你解决一下
如果你非要用temp_s那就这么搞

程序代码:

<script type="text/javascript">
var temp_s = Str()
function Str(){
    var selName = null;
    var inputs = document.getElementsByTagName("input");
    for( var i = 0; i < inputs.length; i++ ){
        if( inputs[i].type == "text" ){
            inputs[i].onchange= function(){
                var temp_s1;
                var temp_t1;
                selName = this.name;  //得到焦点(当前文本框)的名字
                temp_s1 = document.getElementById(selName).value;
                return temp_s1;
            }
        }
    }
}
alert(temp_s)
</script>


[ 本帖最后由 coretear 于 2012-7-13 18:28 编辑 ]
#6
coretear2012-07-13 18:51
你把你要的目的写出来 刚自习看来一下,写的有点问题
#7
cnfarer2012-07-14 06:48
回复 4楼 ibm888
那是因为里面的if语句中temp_s语句没执行到
#8
netlin2012-07-14 07:45
楼主,你这个问题,不是 怎样将内部变量值传递到外部的问题

直接引用你的内容,并在上面做了注解,你看看:

 function Str(){
  var temp_s;
   var selName = null;
var inputs = document.getElementsByTagName("input");
 for( var i = 0; i < inputs.length; i++ ){
  if( inputs.type == "text" ){
   inputs.onchange= function(){    //此处定义函数。这个函数只有在文本框修改内容并离开时才会运行,在定义时不会运行。
    var temp_s1;
    var temp_t1;
    selName = this.name;  //得到焦点(当前文本框)的名字
  temp_s1 = document.getElementById(selName).value;
  temp_s=temp_s1
}
alert(temp_s)    //在调用函数Str()时,此行被执行,此时,“inputs.onchange= function(){”只是在定义函数,它所定义的函数并不会运行,所以此时变量temp_s还是空值。
}
}
 }

这样写会提示红色部分未定义(提示的意思应该是空值),请问如何能将内部得到的temp_s1传递到外部函数变量temp_s

#9
netlin2012-07-14 07:47
楼主,你这个问题,不是 怎样将内部变量值传递到外部的问题

直接引用你的内容,并在上面做了注解,你看看:

 function Str(){
  var temp_s;
   var selName = null;
var inputs = document.getElementsByTagName("input");
 for( var i = 0; i < inputs.length; i++ ){
  if( inputs.type == "text" ){
   inputs.onchange= function(){    //此处定义函数。这个函数只有在文本框修改内容并离开时才会运行,在定义时不会运行。
    var temp_s1;
    var temp_t1;
    selName = this.name;  //得到焦点(当前文本框)的名字
  temp_s1 = document.getElementById(selName).value;
  temp_s=temp_s1
}
alert(temp_s)    //在调用函数Str()时,此行被执行,此时,“inputs.onchange= function(){”只是在定义函数,它所定义的函数并不会运行,所以此时变量temp_s还是空值。
}
}
 }

这样写会提示红色部分未定义(提示的意思应该是空值),请问如何能将内部得到的temp_s1传递到外部函数变量temp_s

#10
netlin2012-07-14 07:48
网络有问题,上传了两次!
#11
coretear2012-07-14 10:19
在逻辑上就有根本性的问题,
先运行 Str() 赋inputs的onchange事件
inputs触发onchange 回调 temp_s 值
#12
coretear2012-07-14 10:25
这样 应该可以解决吧一开始Str不需要赋值
程序代码:

function Str(a){
    var selName = null;
    var inputs = document.getElementsByTagName("input");
    if(a == undefined ){
        for( var i = 0; i < inputs.length; i++ ){
            if( inputs[i].type == "text" ){
                inputs[i].onchange= function(){
                    var temp_s1;
                    var temp_t1;
                    selName = this.name;  //得到焦点(当前文本框)的名字
                    temp_s1 = document.getElementById(selName).value;
                    Str(temp_s1);
                }
            }
        }
    }else{
        alert(a)
    }
}
#13
ibm8882012-07-14 10:45
谢谢netlin,coretear  我已经通过修改程序解决问题了
 同时也谢谢其他坛友 分不够不能一一给分了

[ 本帖最后由 ibm888 于 2012-7-14 11:00 编辑 ]
1