Javascript 如何从外部js文件中的JSON数组中获取变量?
我得到了一个外部JS文件,其中包含JSON数组和函数,可以帮助我选择一组随机变量。当我试图在主HTML文件中生成结果时,p标记中没有显示任何内容。我是否与任何对象或变量不匹配 正文部分中HTML文件的简短示例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
<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