Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 访问document.ready中的变量_Javascript_Jquery_Variables - Fatal编程技术网

Javascript 访问document.ready中的变量

Javascript 访问document.ready中的变量,javascript,jquery,variables,Javascript,Jquery,Variables,我知道以前有人问过这个问题,但我的可能有点不同 我有一个HTML页面,我几乎无法控制,并且对JavaScript的使用有限制。在这个HTML中,我是一个变量,在本例中是一个图像URL数组 在一个外部文件中,我试图使用这个变量。该变量在该文件中的任何位置都有效,但只要我尝试在document.ready中显示它,它就会变得未定义 令人尴尬的是,如果不将外部脚本写入文档,我就无法调用外部脚本。编写脚本(它位于易趣内,您无法轻松调用外部脚本) 有人能帮助解释为什么它不起作用,或者有更好的方法吗 我可以

我知道以前有人问过这个问题,但我的可能有点不同

我有一个HTML页面,我几乎无法控制,并且对JavaScript的使用有限制。在这个HTML中,我是一个变量,在本例中是一个图像URL数组

在一个外部文件中,我试图使用这个变量。该变量在该文件中的任何位置都有效,但只要我尝试在document.ready中显示它,它就会变得未定义

令人尴尬的是,如果不将外部脚本写入文档,我就无法调用外部脚本。编写脚本(它位于易趣内,您无法轻松调用外部脚本)

有人能帮助解释为什么它不起作用,或者有更好的方法吗

我可以完全控制JavaScript文件,但我可以访问HTML,但仅限于我可以在其中编写的内容,而不会被eBay阻止。因此,必须使用document.write

我的代码如下(精简版):

console.log(“图像:+prodImgs”);
$(文档).ready(函数(){
console.log(“文档中的图像就绪:+prodImgs”);
});

var prodImgs=新数组();
产品[0]=”http://example.com/Media/images/testImages/1.jpg";
产品[1]=”http://example.com/Media/images/testImages/1.jpg";
产品[2]=”http://example.com/Media/images/testImages/1.jpg";
产品[3]=”http://example.com/Media/images/testImages/1.jpg";
prodImgs=prodImgs.filter(函数(v){
返回v!=''
});
文件。填写(“”);

如果您在易趣上查看源代码,他们已经在主页上引用了jquery 1.7版

暗示可能存在冲突。我强烈建议不要使用jquery,除非你必须这样做,因为无论eBay决定如何处理他们的通用代码库,你都会心血来潮

使用iframe嵌入内容或功能将允许您拥有独立的代码,不会与ebay的核心冲突,尽管根据您试图实现的目标,您可能会出现跨站点脚本错误

也许两者兼而有之。我想你是想嵌入幻灯片。为此在别处托管一个iframe,然后根据需要保留一般内容和纯javascript


请记住使用闭包和限制全局变量,因为您可能会再次与ebays基代码冲突。

您的意思是要在html页面中声明一个变量吗

想访问.js文件中的变量吗??如果是这样,那么在html文件中声明变量时不要使用
var
关键字

不要用这个

var prodImgs=new Array();
使用下面的一个

prodImgs=new Array();  -- use this.

现在您可以访问.js文件中的
prodImgs
变量

dont do document.write。我必须。。。没有它我无法调用脚本。。对于eBay来说,这是阻止大多数javascript的最好方法。文档的位置是否与脚本相同?是example.com吗?HTML保存在eBay中,脚本保存在我的服务器上。这确实适用于大多数情况。我可以在js文件中使用变量。。在本例中,第一个console.log显示URL的精细。。。但是一旦我在文档中调用它。ready之后加载,它们是未定义的。这里一定有一些事情没有完全记录下来-如果
prodImgs
范围内并且在
控制台中工作。log
.ready()
之外,那么它应该在范围内并且在范围内工作。谢谢Shaun,正在使用它的项目模板在eBay中是iFrame,并且该框架还没有jQuery。。。但这是个好主意!好的,谢谢。我相信您已经检查过了,但以防万一,请注意它不是一个名称中包含Jquery的链接。如果iframe源代码中有任何.js引用,请仔细检查是否没有jquery和/或$assignments。您还可以尝试使用jQuery.ready?关键字
var
的要点是指示变量只属于当前范围,而不是全局范围;基本上,它只在代码位于创建其自身作用域(如函数)的内部时才起作用,这里不是这种情况。但据我所知,如果您希望将变量从html文件共享到js文件,则这一点很重要。这是唯一的选择。如果你想试试,你可以。。