Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 imageObj&;范围_Javascript_Scope - Fatal编程技术网

JavaScript imageObj&;范围

JavaScript imageObj&;范围,javascript,scope,Javascript,Scope,有一个嵌套函数(函数中的函数)与我添加的一些测试类似: function addImage( ....., borderColor){ var height; var width; var imageObj = new Image(); alert(' just before inner function is: ' + borderColor); imageObj.onload = function(){ alert(' just after inn

有一个嵌套函数(函数中的函数)与我添加的一些测试类似:

function addImage( ....., borderColor){
   var height;
   var width;
   var imageObj = new Image();
   alert(' just before inner function is: ' + borderColor); 
   imageObj.onload = function(){
      alert(' just after inner function is: ' + borderColor);   
第一个警报显示正确的颜色,但第二个警报为“null”


如何获取嵌套函数内部的变量borderColor?

首先声明
onload
,然后通过分配源来触发加载,比如将外部函数包装在内部函数周围:

  function addImage(src, borderColor)
  {
     var pic = new Image();
     pic.onload = function () {
         alert(' just after inner function is: ' + borderColor); 
     }
     alert(' just before inner function is: ' + borderColor); 
     pic.src = src; //<-- this is what you need to set.
  }
函数addImage(src,borderColor)
{
var pic=新图像();
pic.onload=函数(){
警报('just after internal function is:'+borderColor);
}
警报('就在内部函数为:'+borderColor之前);
pic.src=src;//它对我来说很好用

  • 您确定第二个警报是
    警报('just after internal function is:'+borderColor);
    部分吗
  • 您确定变量
    borderColor
    未在其他地方使用吗
  • 你在测试什么浏览器

您可以尝试以下方法():


请显示整个函数。SLacks,我通过将所有内容添加到第二个提示符进行编辑。John,然后你必须设置src属性,否则不会触发onload。我不认为这是他的问题,他仍然收到警报,但他说警报范围不正确。这是一个关于较大函数的调试问题,也是Caspar p定点输出imageObj是在onload之后设置的(它与.src=\uuuuuuuuuu之后的一行有关,我不理解操作顺序。您的评论让我思考并帮助修复了这个问题。
function addImage(borderColor){
    var imageObj = new Image();

    alert(' just before inner function is: ' + borderColor);    

    imageObj.addEventListener("load", function() {
        alert(' just after inner function is: ' + borderColor);
    }, false);

    imageObj.src = "http://www.google.com/intl/en_com/images/srpr/logo1w.png";
};

addImage("#000000");