2012-08-26 1 views
2

Я пишу скрипт, который анализирует XML-файл и отображает его в html. Вот оно:Проверка значения Javascript

<script> 
$.get("api.xml", function (xml) { 
    $(xml).find("row").each(function() { 

     var date = $(this).attr('date'); 
     var amount = $(this).attr('amount'); 
     var balance = $(this).attr('balance'); 

document.write("A: " + date + "<br />B: " + amount + " ISK<br />C: " + balance + " ISK<br /><br /><br /><br />"); 
    }); 
}); 
</script> 

Я хочу изменить выход «document.write», так что если значение «количество» положительно, введите слово «зеленый», в противном случае, если отрицательные, введите слово «красный». Я попытался написать это следующим образом:

<script> 
$.get("api.xml", function (xml) { 
    $(xml).find("row").each(function() { 

     var date = $(this).attr('date'); 
     var amount = $(this).attr('amount'); 
     var balance = $(this).attr('balance'); 

document.write("<script> if (amount >= 0) { document.write("green"); } else{ document.write("red"); } </scri" + "pt>"); 
    }); 
}); 
</script> 

Но в той части, я получаю ошибку синтаксиса в «document.write». Что я написал неправильно и как это исправить?

+0

Обратите внимание, что ваше использование 'document.write' заменит всю страницу новым контентом. –

+0

Ярлык синтаксиса SO имеет ответ для вас. Его цитаты, посмотрите, как «зеленый» и «красный» выделены в вашем вопросе. –

ответ

3

Я думаю, что вы можете вычислить цвет перед записью вывода с помощью document.write. Что-то, как это должно работать:

<script> 
$.get("api.xml", function (xml) { 
    $(xml).find("row").each(function() { 
    var date = $(this).attr('date'); 
    var amount = $(this).attr('amount'); 
    var balance = $(this).attr('balance'); 

    var color = "green"; 
    if (amount < 0) { 
    color = "red"; 
    } 

    document.write("A: " + date + "<br />B: <span style='color:" + color + "'>" + amount + " ISK</span><br />C: " + balance + " ISK<br /><br /><br /><br />"); 
}); 
}); 
</script> 

(синтаксис непроверенные)

+0

вы можете написать это в одной строке: 'var color = amount <0? «красный»: «зеленый»; – balexandre

2
<script> 
$.get("api.xml", function (xml) { 
    $(xml).find("row").each(function() { 

     var date = $(this).attr('date'); 
     var amount = $(this).attr('amount'); 
     var balance = $(this).attr('balance'); 
     document.write(amount >= 0 ? "green" : "red"); 
    }); 
}); 
</script> 
+0

Спасибо TheHe! =) –

3

Чтобы получить ответ просто посмотреть, как будет выделен этот код. Слова «зеленый» и «красный» находятся вне кавычек. Вы должны использовать одинарные кавычки (или избегать двойных кавычек).

Другой вопрос, почему вы используете метапрограммирование для такой простой задачи. Просто напишите условие с двумя разными операторами document.write.

Смежные вопросы