Javascript 如何从外部js文件中的JSON数组中获取变量?

Javascript 如何从外部js文件中的JSON数组中获取变量?,javascript,html,json,Javascript,Html,Json,我得到了一个外部JS文件,其中包含JSON数组和函数,可以帮助我选择一组随机变量。当我试图在主HTML文件中生成结果时,p标记中没有显示任何内容。我是否与任何对象或变量不匹配 正文部分中HTML文件的简短示例 <p id="result"></p> <script src="myJSfile.js" type="text/javascript"> <script language="javascript" type="text/javascript"&g

我得到了一个外部JS文件,其中包含JSON数组和函数,可以帮助我选择一组随机变量。当我试图在主HTML文件中生成结果时,p标记中没有显示任何内容。我是否与任何对象或变量不匹配

正文部分中HTML文件的简短示例

<p id="result"></p>
<script src="myJSfile.js" type="text/javascript">
<script language="javascript" type="text/javascript">
document.getElementById("result").innerHTML = lottery(selected.name + selected.age);
</script>

document.getElementById(“结果”).innerHTML=彩票(selected.name+selected.age);
外部JS文件的简短示例

function lottery() {
var from, to, selected=new Array();
var person=
    [
     {"name":"Georgia","age":"45"},
     {"name":"John","age":"38"},
     {"name":"Michael","age":"29"},
    ];
    if (arguments[0] == "all") {
      from=0;
      to=person.length;
    }
    else {
      from=Math.floor(Math.random()*3);
      to=Math.floor(Math.random()*3+1);
    }
    for (i=0; i<to; i++) {
        selected[i]=person[from];
        from=(from+1)%3;
    }
    return selected;
   }
函数抽签(){
var from,to,selected=新数组();
变量人=
[
{“姓名”:“格鲁吉亚”,“年龄”:“45”},
{“姓名”:“约翰”,“年龄”:“38”},
{“姓名”:“迈克尔”,“年龄”:“29”},
];
if(参数[0]=“全部”){
from=0;
to=人长;
}
否则{
from=Math.floor(Math.random()*3);
to=Math.floor(Math.random()*3+1);
}

对于(i=0;i您的
from
to
所选的
变量在函数外部不可见,只需将此行
var from,to,selected=new Array();
从函数中取出即可

全部
var from,to,selected=new Array();
彩票(“全部”);
对于(var k=0;k';
}
函数{
变量人=
[
{“姓名”:“格鲁吉亚”,“年龄”:“45”},
{“姓名”:“约翰”,“年龄”:“38”},
{“姓名”:“迈克尔”,“年龄”:“29”},
];
if(参数[0]=“全部”){
from=0;
to=人长;
}
否则{
from=Math.floor(Math.random()*3);
to=Math.floor(Math.random()*3+1);
}
对于(i=0;i

您的
from
to
所选的
变量在函数外部不可见,只需将此行
变量from、to、selected=new Array();
带出函数即可

全部
var from,to,selected=new Array();
彩票(“全部”);
对于(var k=0;k';
}
函数{
变量人=
[
{“姓名”:“格鲁吉亚”,“年龄”:“45”},
{“姓名”:“约翰”,“年龄”:“38”},
{“姓名”:“迈克尔”,“年龄”:“29”},
];
if(参数[0]=“全部”){
from=0;
to=人长;
}
否则{
from=Math.floor(Math.random()*3);
to=Math.floor(Math.random()*3+1);
}
对于(i=0;i

我对您的代码做了一些更改,请检查,这应该可以工作

<p id="result"></p>
<script src="stackoverflow.js" type="text/javascript">
<script>
 (function() {
   document.getElementById("result").innerHTML = lottery('all');
 })();
</script>

(功能(){ document.getElementById(“结果”).innerHTML=lotking('all'); })();
在你的外部js中

function lottery() {
var from;
var to; 
var selected=new Array();
var person=
[
 {"name":"Georgia","age":"45"},
 {"name":"John","age":"38"},
 {"name":"Michael","age":"29"},
];
if (arguments[0] == "all") {
  from=0;
  to=person.length;
}
else {
  from=Math.floor(Math.random()*3);
  to=Math.floor(Math.random()*3+1);
}
for (i=0; i<to; i++) {
    selected[i]=person[from];
    from=(from+1)%3;
}
return selected;
}
函数抽签(){
var来自;
var-to;
所选变量=新数组();
变量人=
[
{“姓名”:“格鲁吉亚”,“年龄”:“45”},
{“姓名”:“约翰”,“年龄”:“38”},
{“姓名”:“迈克尔”,“年龄”:“29”},
];
if(参数[0]=“全部”){
from=0;
to=人长;
}
否则{
from=Math.floor(Math.random()*3);
to=Math.floor(Math.random()*3+1);
}

对于(i=0;i我在您的代码中做了一些更改,请检查,这应该可以工作

<p id="result"></p>
<script src="stackoverflow.js" type="text/javascript">
<script>
 (function() {
   document.getElementById("result").innerHTML = lottery('all');
 })();
</script>

(功能(){ document.getElementById(“结果”).innerHTML=lotking('all'); })();
在你的外部js中

function lottery() {
var from;
var to; 
var selected=new Array();
var person=
[
 {"name":"Georgia","age":"45"},
 {"name":"John","age":"38"},
 {"name":"Michael","age":"29"},
];
if (arguments[0] == "all") {
  from=0;
  to=person.length;
}
else {
  from=Math.floor(Math.random()*3);
  to=Math.floor(Math.random()*3+1);
}
for (i=0; i<to; i++) {
    selected[i]=person[from];
    from=(from+1)%3;
}
return selected;
}
函数抽签(){
var来自;
var-to;
所选变量=新数组();
变量人=
[
{“姓名”:“格鲁吉亚”,“年龄”:“45”},
{“姓名”:“约翰”,“年龄”:“38”},
{“姓名”:“迈克尔”,“年龄”:“29”},
];
if(参数[0]=“全部”){
from=0;
to=人长;
}
否则{
from=Math.floor(Math.random()*3);
to=Math.floor(Math.random()*3+1);
}

对于(i=0;iThx@sanjay。它确实显示了一些东西,但没有从JSON中获取准确的值。显示为[object object],[object object]而不是[John 38]那个东西。我想我知道了方向。@Joey显示[object object object object]是因为彩票函数返回selected as object,所以尝试从中获取值..像selected[0].name。如果这个答案解决了您的问题,那么请接受itthx作为提示。我想这就是原因。选择[0]。但是名称不起作用。我检查了在HTML文件中直接插入相同的JSON集,然后插入类似person[0]的内容.name工作正常…*叹气*Thx@sanjay。它确实显示了somthing,但没有从JSON中获取准确的值。显示为[object object],[object object]而不是[John 38]那个东西。我想我知道方向了。@joey它显示[object object object]是因为彩票函数返回selected作为object,所以尝试从中获取值。。像selected一样[0].name。如果这个答案解决了您的问题,那么请接受itthx作为提示。我想这就是原因。选择[0]。但是name不起作用。我检查了直接在HTML文件中插入相同的JSON集,然后插入类似person[0]的内容.name工作正常…*sigs*Thx@Muhammad。我尝试过。它似乎工作正常,但我仍然无法从给定的JSON中获取值。我以[John 38]的形式例外,但它以[object object object]的形式返回。可能innerHTML部分仍有问题。无论如何,几乎完成了。请尝试获取值,如
selected[0].name
遗憾的是,它没有改变任何事情……我应该拿走彩票的毯子吗?@JoeyU请看我的答案我添加了一个示例,如果它解决了问题,请不要忘记将其标记为已接受。:-)太棒了。它工作了!thx太多了。所以,添加一个额外的变量k来定义selected是关键。thx@Muhammad。我尝试过。它似乎工作了,但我仍然无法从给定的JSON中获取值。我以[John 38]的形式例外,但它以[object object]的形式返回。也许innerHTML部分仍然有问题。几乎是d