NooBskie
NooBskie

Reputation: 3841

Why is this function not firing?

I am working with the bing translate api and i have the following code

function translateali(){
  document.onreadystatechange = function () {
      if (document.readyState == 'complete') {
          Microsoft.Translator.Widget.Translate('en', 'zh-cn', onProgress, onError, onComplete, onRestoreOriginal, 2000);
      }
  }
  function onProgress(value) {}
  function onError(error) {}
  function onComplete() {}
  function onRestoreOriginal() {}
}
translateali()

I am trying to bind the function to a onclick event which is why I wrapped it in a function but it doesnt do anything on click. However if I remove the function wrap like below it will work on page load

  document.onreadystatechange = function () {
      if (document.readyState == 'complete') {
          Microsoft.Translator.Widget.Translate('en', 'zh-cn', onProgress, onError, onComplete, onRestoreOriginal, 2000);
      }
  }
  function onProgress(value) {}
  function onError(error) {}
  function onComplete() {}
  function onRestoreOriginal() {}
}

Upvotes: 2

Views: 74

Answers (1)

Jesper Højer
Jesper Højer

Reputation: 3192

You are adding the listener, not the function.

Do the following:

function translateali() {
  if (document.readyState == 'complete') {
      Microsoft.Translator.Widget.Translate('en', 'zh-cn', onProgress, onError, onComplete, onRestoreOriginal, 2000);
  }
}

So your button would look like this:

<button onclick="translateali()">Translate</button>

Upvotes: 4

Related Questions