存储并从一个函数获取值到另一个函数

时间:2016-05-30 10:54:54

标签: javascript jquery html

我有一个html页面,我正在从html页面调用javascript函数,脚本位于单独的文件中

HTML

<a href="javascript:void(0);" id="btn1" onclick="ButtonClick();">Click Me</a>
<script src="Externalscript.js"></script>
<script>
    Initialize('1,2,3,4');
</script>

的JavaScript

var myList;  //global variable
function Initialize(ids) {
myList = new Array();
var idList = ids.split(',');
for (i = 0; i < idList.length; i++) {
    myList.push(idList[i]);
}

我将id值存储在myList中,现在我想在点击按钮时检索myList

 function ButtonClick() {
    alert(myList);
}

现在,当我试图提醒myList时,它正在提供undefined

如何将值存储在global变量中并在其他函数中检索

4 个答案:

答案 0 :(得分:2)

return函数的值比更新global-variable并访问它

&#13;
&#13;
function ButtonClick() {
  var returned = Initialize('1,2,3,4');
  console.log(returned);
}

function Initialize(ids) {
  var myList = new Array();
  var idList = ids.split(',');
  for (i = 0; i < idList.length; i++) {
    myList.push(idList[i]);
  }
  return myList;
}
&#13;
<a href="javascript:void(0);" id="btn1" onclick="ButtonClick();">Click Me</a>
&#13;
&#13;
&#13;

修改:将结果存储在global-variable

&#13;
&#13;
var returned = Initialize('1,2,3,4');

function ButtonClick() {
  console.log(returned);
}

function Initialize(ids) {
  var myList = new Array();
  var idList = ids.split(',');
  for (i = 0; i < idList.length; i++) {
    myList.push(idList[i]);
  }
  return myList;
}
&#13;
<a href="javascript:void(0);" id="btn1" onclick="ButtonClick();">Click Me</a>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

<!DOCTYPE html >
<html>
<head>
<script>
    Initialize('1,2,3,4');
    var myList;  //global variable
          function Initialize(ids)
          {
          myList = new Array();
          var idList = ids.split(',');
          for (i = 0; i < idList.length; i++)
                   {
                    myList.push(idList[i]);
                   }
          }

         function ButtonClick() 
          {
               alert(myList);
         }
</script>
        </head>
        <body>
        <a href="javascript:void(0);" id="btn1" onclick="ButtonClick();">Click Me</a>
        </body>
        </html>

我刚刚重写了你的代码,并按预期将列表打印为1,2,3,4

答案 2 :(得分:0)

我在重建问题时遇到了麻烦。这是你的代码的样子:

<a href="javascript:void(0);" id="btn1" onclick="alert(myList)">Click Me</a>

<script>

var myList;  //global variable
function Initialize(ids) {
    myList = new Array();
    var idList = ids.split(',');
    for (i = 0; i < idList.length; i++) {
      myList.push(idList[i]);
    }
 }

 Initialize('1,2,3,4');
</script>

http://codepen.io/calvinclaus/pen/WxNaPX?editors=1011

因为这有效......你可以提供问题的笔 ?

答案 3 :(得分:0)

您的代码应该有效。

一条建议:split已经创建了一个数组:MDN

所以你正在做的是:

  • 从字符串(idList = ids.split(',')
  • 创建一个数组
  • 遍历该数组
  • 将该数组中的每个值添加到另一个数组(myList.push(idList[i]);

myList = ids.split(',');足够

实施例

var myList; 

function Initialize(ids) {
    myList = ids.split(',');
}

Initialize('1,2,3,4');

function ButtonClick(e) {
    e.preventDefault();

    alert(myList);
}
document.getElementById('btn1').addEventListener('click', ButtonClick);

工作演示: fiddle