У меня много элементов на странице, и я хочу перевести их на какой-нибудь язык. Язык не одинаков для всех полей, то есть для 1-го поля он может быть fr, а для третьего поля он может быть en, а затем для 7-го поля может быть pa.
В основном я написал код, и он работает: -
<script type="text/javascript">
//<![CDATA[
google.load("language", "1");
window.onload = function(){
var elemPostTitles = document.getElementsByTagName("h4");
var flag = true;
for(var i = 0 ; i < elemPostTitles.length ; i++){
while(flag == false){
}
var postTitleElem = elemPostTitles[i];
var postContentElem = document.getElementById("postContent_" + i);
var postTitle = postTitleElem.innerHTML;
var postContent = postContentElem.innerHTML;
var languageCode = document.getElementById("languageCode_" + i).value;
google.language.detect(postTitle, function(result) {
if (!result.error && result.language) {
google.language.translate(postTitle, result.language, languageCode,
function(result) {
flag = true;
if (result.translation) {
postTitleElem.innerHTML = result.translation;
}
});
}
});
flag = false;
}
Как видите, я пытаюсь ограничить прохождение цикла до тех пор, пока не будет получен результат предыдущего вызова ajax. Если я этого не сделаю, будет переведено только последнее поле. Мой код работает хорошо, но из-за бесконечного цикла я продолжаю получать ошибки от Mozilla, чтобы «прекратить выполнение сценариев». Как мне избавиться от этого? Кроме того, мой подход правильный? Или есть какая-то встроенная функция, которая может облегчить мою задачу? Заранее спасибо:)