2016-08-06 2 views
0

when 문을 만들려고하는데 계획대로 작동하지 않습니다. 기본적으로 시도 할 때 다른 함수를 호출하는 함수입니다. 나는 여기에서 더 설명하기 전에 먼저커스텀 when 커밋 함수가 실행되지 않음

when(function() { 
    //code here 
}); 

지금 기본적으로 ... 이런 식으로 생각 .. 우리는 진행 막대가 .. 우리는 또한 다음과 같은 사용자 정의 이벤트를 구문에게 ...입니다

var pBarEvent = document.createEvent('Event'); 
pBarEvent.initEvent('pbardone', true, true); 
document.addEventListener('pbardone', function() { 
    //code here 
}); 
//if progress bar reaches 100 dispatchEvent 
if (document.querySelector(".progress-bar").style.width === 100 + "%") 
{ 
    document.dispatchEvent(pBarEvent); 
} 

이제 그 코드가 예제입니다. 문서가로드되고 예를 들어 50 %로 표시되면 keydown 또는 클릭과 같은 다른 이벤트를 추가 할 때까지 트리거되지 않습니다. 내가하고 싶은 일을하고 싶지 않아. ""진행률 표시 줄 너비가 100 % 일 때. 그게 기본적으로 무슨 일이 필요합니다. 그래서 여기에 when 문에 대한 코드가 있습니다. (마음에 들지 않는 것이 가장 좋습니다. 일반적으로이 작업을하지는 않지만이 동적 인 작업을 유지하고 나중에 나중에이 작업을 수행하려는 사람이이 질문을 볼 수 있음을 알고있는 사람) 그것은 트리거되지 않습니다

when(function() { 
    SmartLeadJS.SmartLeadEvents.customEvents.progressBarFull(function() { 
     alert("100%"); 
     SmartLeadJS.SmartLeadAds.LeadView.ChromeExtension.General.DynamicStyles.$.style("body", "background", "black"); 
    }); 
}); 

)

내가 좋아하는 뭔가를 시도 갈 때 기능

function when(func) 
{ 
    var nowActive = false; 
    if (!typeof func === 'undefined') 
    { 
     func = new Function(); 
    } 
    if (func) 
    { 
     nowActive = true; 
     clearInterval(whenStatementTimer); 
    } 
    else 
    { 
     nowActive = false; 
     var whenStatementTimer = setInterval(function() { 
      switch(func) 
      { 
       case true: 
       { 
        nowActive = true; 
        when(); 
        break; 
       } 
       case false: 
       { 
        nowActive = false; 
        when(); 
        break; 
       } 
      } 
     }, 1000); 
    } 
    if (nowActive === true) 
    { 
     func(); 
    } 
} 

지금이 작동하지 않습니다 .... 나는 성명서를 제출할 때 도움이 필요하다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 문제를 해결하려면 어떻게해야합니까? 오류는 발생하지 않지만 실행되지 않습니다. 답변에 따라

편집

기능

when(true).do(function() { 
    SmartLeadJS.SmartLeadEvents.customEvents.progressBarFull(function() { 
     alert("This divs going through changes!!"); 
     SmartLeadJS.SmartLeadAds.LeadView.ChromeExtension.General.DynamicStyles.$.style(".div", "background", "black"); 
    }); 
}); 

이 작동하지 않습니다으로 사용

function when(currentValue) 
{ 
    try 
    { 
     var o = {}; 
     o.currentValue = currentValue; 
     o.do = function(func) 
     { 
      if (!typeof func === 'undefined') 
      { 
       func = new Function(); 
      } 
      if (this.currentValue) 
      { 
       func(); 
      } 
      else 
      { 
       setTimeout(this.do(func), 100); 
      } 
     }; 
     return o; 
    } 
    catch(e) 
    { 
     console.log(e); 
    } 
} 

을 시도했다. 그것은 결코 발생하지 않습니다.

when("true").do(function(){}); 

그것은 지금 작동 :) : 나는 같은 온 클릭 리스너를 사용하는 경우 그러나

document.addEventListener("click", function() { 
    SmartLeadJS.SmartLeadEvents.customEvents.progressBarFull(function() { 
     alert("This divs going through changes!!"); 
     SmartLeadJS.SmartLeadAds.LeadView.ChromeExtension.General.DynamicStyles.$.style(".div", "background", "black"); 
    }); 
}, false); 
+0

switch (func) {case true –

+0

} 기본적으로 함수가 작동하는지, 그렇지 않으면 기본적으로 이해하지 못합니다. 나는 Ive가 결코 전에 이와 같은 기능을 만들지 못했다고 말했습니다. – user019911019019101901

+0

Func은 함수 객체입니다. 그것은 가치가 없다. –

답변

0
function when(statement){ 
    o={}; 
    o.statement=statement; 
    o.do=function(func){ 
     awhen(this.statement,func); 
    }; 
    return o; 
} 
function awhen(statement,func){ 
    if(eval(statement)){ 
     func(); 
    }else{ 
     window.setTimeout(function(){awhen(statement,func);},100); 
    } 
} 

사용을 발생합니다. 그 상태를 중요하게 두는 것이 ""!

+0

왜 코드가 짧습니까? – evolutionxbox

+0

길이! = 품질 –

+0

짧은!= 가독성 – evolutionxbox

관련 문제