#css #json #jsonp
#css #json #jsonp
Вопрос:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="styles/common.css">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type='text/javascript'>
$(function() {
$.getJSON('http://api.jo.je/justgiving/jsonp.php?d=expedition-aconcaguaamp;callback=?', {}, function (data) {
$('#title').html(data.title);
$('#target').html(data.donations_target);
$('#raised').html(data.donations_total);
$('#percent').html(data.percentage_complete);
$('#charity').html(data.charity);
$('#charity_details').html(data.charity_details);
$('#charity_logo').html(data.charity_logo);
var donations = "";
$.each(data.donations, function(index, value) {
if (index < 3)
{
donations = donations "<strong>" value.person "</strong>" value.amount "<br />" value.message "<br />";
}
});
$('#donations').html(donations);
var cssjson = {
".percentage_bar_complete":{
"width":"data.percentage_complete"
}
}
var styleStr = "";
for(var i in cssjson){ styleStr = i " {n"
for(var j in cssjson[i]){
styleStr = "t" j ":" cssjson[i][j] ";n"
}
styleStr = "}n"
}
})
});
</script>
</head>
<body>
<h2><span id='title'></span></h2>
<h3><span id='charity'></span></h2>
<div><img src="<span id='charity_logo'></span>" /><span id='charity_logo'></span></div>
<h3>Target <span id='target'></span>, <span id='raised'></span> raised</h3>
<h4>Percentage Complete - <span id='percent'></span>%</h4>
<div class="percentage_bar">
<div class="baseline">
<p>0%</p>
</div>
<div class="total">
<p>100%</p>
</div>
<br clear="all" />
<div class="percentage_bar_bg">
<div class="percentage_bar_complete">
</div>
</div>
</div>
<h3>Most recent donations</h3>
<div id='donations'></div>
У меня возникли трудности с получением CSS-части JSON для работы. Намерение состоит в том, чтобы иметь два слоя div, один сверху другого, нижний с шириной 100%, чтобы указать пустую строку, а другой с шириной в процентах, полученной из JustGiving JSON feed «percentage_complete».
Однако добавленный мной CSSJSON-код, похоже, не работает. Буду признателен за любую помощь.
Страницу в ее нынешнем виде можно посмотреть здесь http://www.adam-poole.co.uk/test/jg.html
Комментарии:
1. Привет, Адам, у меня есть разработчик api.jo.je , если у вас есть какие-либо запросы, связанные с API, или функциональные запросы / отзывы и т.д., пожалуйста, дайте мне знать! Моя электронная почта / twitter включена api.jo.je/justgiving или @easyjo
Ответ №1:
var cssjson = {
".percentage_bar_complete":{
"width":"data.percentage_complete"
}
}
вы устанавливаете для свойства width значение (string) "data.percentage_complete"
вместо значения переменной data.percentage_complete
. удалите двойные кавычки вокруг имени переменной.
Комментарии:
1. Привет, Dvir, спасибо за ответ и извинения, мне потребовалось так много времени, чтобы ответить. Я попытался удалить двойные кавычки из имени переменной, но это не имело никакого значения. Есть еще идеи?
2. @ratpuddle ты уверен? потому что я попробовал это сам, и это исправило это. Чтобы прояснить, третья строка должна быть
"width": data.percentage_complete
вместо того, что сейчас.3. Я попробовал еще раз, но удалил двойные кавычки, как указано. «width»: data.percentage_complete Похоже, я все еще не получаю требуемого результата. У вас появилась цветная полоса поверх серой?
4. @ratpuddle: с этим связаны две проблемы. Первый — это тот, который я сказал, а второй — что, черт возьми, должен делать этот styleStr? Это не способ изменить свойства CSS после загрузки DOM, и даже если бы это было так, вы все равно нигде не используете эту переменную. Вам нужно попробовать что-то вроде:
$(".percentage_bar_complete").css("width", data.percentage_complete "%");
вместо этого styleStr.5. Спасибо, что продолжаете со мной. Это была моя первая попытка CSSJSON, и, похоже, я выбрал плохой пример кода для работы. Вы были правы в разделе styleStr, и проблема заключалась в var. Я удалил это и добавил приведенный выше код, и он работает отлично. Еще раз спасибо.