JavaScript imageObj & Scope - PullRequest
       1

JavaScript imageObj & Scope

0 голосов
/ 05 июля 2011

Существует вложенная функция (функция внутри функции), которая выглядит примерно так, как и некоторые тесты, которые я добавила:

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 внутри вложенной функции?

Ответы [ 3 ]

1 голос
/ 05 июля 2011

тестовый пример здесь он прекрасно работает для меня

  • Вы уверены, что второе предупреждение - это часть alert(' just after inner function is: ' + borderColor);?
  • Вы уверены, что переменная borderColor нигде не используется?
  • в каком браузере вы тестируете?
0 голосов
/ 05 июля 2011

Вы можете попробовать что-то вроде этого ( JSFiddle ):

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");
0 голосов
/ 05 июля 2011

объявляет 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.
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...