2017-03-28 10 views
-1

外としてundefinedを返します。私は以下のようにsetTimeout関数内のif文が含まれている場合変数は、以下のコードを見つけてください機能

はまた:上記ところで

setTimeout(function() { 
    var objTextareaText = objTextArea.innerText; 
       var normalizedText = objTextareaText; 
       if (!countSpacesAsChars) { 
        normalizedText = objTextareaText.replace(/\s/g, "").replace(/ /g, ""); 
       } 
       strText = normalizedText.replace(/(\r\n|\n|\r)/gm, "").replace(/ /gi, " ");   
       //Strip Html tags 
       strText =   normalizedText.replace(/(<([^>]+)>)/ig,"").replace(/^([\t\r\n]*)$/, ""); 

       if ((e.data.domEvent.$.keyCode === 8) ||  (e.data.domEvent.$.keyCode === 46) || ((e.data.domEvent.$.shiftKey) 
        && (e.data.domEvent.$.keyCode === 36)) || ((e.data.domEvent.$.shiftKey) && (e.data.domEvent.$.keyCode === 35)) 
        || (e.data.domEvent.$.keyCode === 35) || (e.data.domEvent.$.keyCode === 36) || (e.data.domEvent.$.keyCode === 37) 
        || (e.data.domEvent.$.keyCode === 38) || (e.data.domEvent.$.keyCode === 39) || (e.data.domEvent.$.keyCode === 40)) { 
        showCharacterCount(); 
        e.cancelBubble = false; 
        e.returnValue = true; 
        return true; 
       } 
       // Reaches Max Length - Shows error MAX_VALUE Reached Error Msg. 
       if (strText.length >= MaxLength) { 
        showCharacterCount(); 
        e.cancelBubble = true; 
        e.returnValue = false; 
        e.cancel(); 
        e.stop(); 
        return false; 
       } else { 
        showCharacterCount(strText); 
        e.cancelBubble = false; 
        e.returnValue = true; 
        return true; 
       } 
      }, 50); 

キーイベントの場合には問題があります。

e.cancelBubble = true; 
e.returnValue = false; 
        e.cancel(); 
        e.stop(); 
        return false; 

これらのコードは機能しません。

解決策をご提案ください。 注:settimeout関数は、私がsalesforceのRTFからの文字数を取得しているときに使用する必要があります。あなたはそれ(閉鎖機能)が外部へのアクセスを持っているので、その後、閉鎖機能を使用して行うことができ、その外側の変数値のsetTimeoutを使用したい場合は閉鎖がsetTimeoutを

setTimeout(function() { 

var objTextareaText = objTextArea.innerText; 
var normalizedText = objTextareaText; 
         if (!countSpacesAsChars) { 
          normalizedText = objTextareaText.replace(/\s/g,"").replace(/&nbsp;/g, "");} 
         strText = normalizedText.replace(/(\r\n|\n|\r)/gm, "").replace(/&nbsp;/gi, " ");   
         //Strip Html tags 
         strText = normalizedText.replace(/(<([^>]+)>)/ig,"").replace(/^([\t\r\n]*)$/, ""); 



//change below code line as closure 
    }(), 50); 


// now strText is not undefined 
if (strText.length >= MaxLength) { 

} 

に追加があってコードの下

+0

あなたの質問をきれいにして、不必要な詳細を追加しないでください。 – eddyP23

答えて

1

使用、内部および機能内にある。詳細はclosure function

+0

間違いとそれを解決する方法を説明してください –

+0

setTimeout変数値を使用したい場合は、 (クロージャー関数)が関数の外側、内側、関数内にアクセスできるので、クロージャー関数を使用して行うことができます。 more info https://developer.mozilla.org/en/docs/Web/JavaScript/Closures –

+0

私は問題の兄弟を持っていません。私はあなたの答えを編集し、詳細で更新すると言った。だから、私たちは皆神の質の高い答えを期待しています。私は詳細な回答を残すことができ、それは受け入れられるかもしれません。しかし私はあなたの努力を大切にします。より多くの票を獲得して受け入れられるように、良質の回答を投稿してください。 –

関連する問題