Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Mała modyfikacja skryptu od pogody
Forum PHP.pl > Forum > Przedszkole
Piotr.pot
Witam,
Nie programuję w php, potrzebuję jednak dokonać pewnej niewielkiej modyfikacji w kodzie skryptu pobierającego pogodę z serwisu yahoo.

Problem polega na tym, że pobrany opis pogody (Sunny, Cloudy itp.) jest prosto z serwera przypisywany do zmiennej obj.description (15.linijka). Później w miejscu gdzie wyświetlam opis pogody używam po prostu tego obj.description i co za tym idzie opisy mam po angielsku, bo prosto z serwera. Chodzi więc o to, aby po fragmencie pobierającym pogodę:

Kod
function xml_loaded (event, request, callback)
{
   if (request.responseXML)
   {
        var obj = {error:false, errorString:null};
       var effectiveRoot = findChild(findChild(request.responseXML, "rss"), "channel");
       obj.city = findChild(effectiveRoot, "yweather:location").getAttribute("city");
       obj.realFeel = findChild(effectiveRoot, "yweather:wind").getAttribute("chill");//Only accounts for windChill
       
       conditionTag = findChild(findChild(effectiveRoot, "item"), "yweather:condition");
       obj.temp = conditionTag.getAttribute("temp");
       obj.icon = conditionTag.getAttribute("code");
       obj.description = conditionTag.getAttribute("text");
       callback (obj);
   }else{
       callback ({error:true, errorString:"XML request failed. no responseXML"});
   }
}


dorzucić taki fragment kodu, aby zamiast pobranego "Cloudy" pod obj.descripton podstawił "Zachmurzenie". Ręcznie powprowadzałbym polskie odpowiedniki oryginalnych opisów. Da radę takie coś zrobić? Tak żeby po pobraniu, ale jeszcze przed wyświetleniem na stronie spolszczyć te opisy?
Maxik
Z tym, że ten kod ma mało wspólnego z PHP.
Piotr.pot
JS?
Pomożecie mi coś z tym zrobić?
ddiceman
dopisz za 15 linijka
  1. <?php
  2. obj.description = str_replace(array('Cloudy', 'Sunny', 'Rainy'), array('Pochmurny', 'Słoneczny', 'Deszczowy'), obj.description);
  3. ?>


korekta:
ach, rzeczywiscie - rozpedzilem sie, bo to rzeczywiscie nie PHP. po 15 linijce:

Kod
switch(obj.description){
    case 'Cloudy':
        obj.description = 'Pochmurno';
        break;
    case 'Sunny':
        obj.description = 'Słonecznie';
        break;
    case 'Windy':
        obj.description = 'Wietrznie';
        break;
}
Piotr.pot
Tak jest! Oczywiście działa! Dziękuję bardzo i przepraszam za zamieszanie z tym PHP.
Pozdrawiam!

Edit:
I jeszcze szybkie pytanie, bo napotkałem mały problem. Na stronie wypluwam to poprzez:
Kod
document.getElementById("desc").innerText=obj.description.toLowerCase();

I mimo, że w switchu podałem nową nazwę "Lekkie opady" to i tak wyświetla się "Lekkie Opady", czyli podbija do góry pierwsze litery wyrazów. Dzieje się tak nawet, gdy użyję bezpośrednio:
Kod
document.getElementById("desc").innerText=obj.description;


Co powinienem dopisać, aby tylko pierwsza litera pierwszego wyrazu była podbijana do wielkiej litery.
Piotr.pot
Jak zastosować ten ucfirst w tym przypadku, bo próbowałem na różne sposoby ale niestety nie potrafię.
Kod
document.getElementById("desc").innerText=obj.description;
erix
Zadeklaruj go sobie najpierw (tamta funkcja, do której zalinkowałem) i podstaw ją zamiast obj.description. Oczywiście, podaj to jako parametr.
ddiceman
No albo po prostu
Kod
document.getElementById("desc").innerText = obj.description.charAt(0).toUpperCase() + obj.description.substr(1);
Piotr.pot
Cytat(ddiceman @ 10.02.2009, 00:34:42 ) *
No albo po prostu
Kod
document.getElementById("desc").innerText = obj.description.charAt(0).toUpperCase() + obj.description.substr(1);


Nadal każdy wyraz rozpoczyna się od wielkiej litery, a nie tylko pierwsza litera w pierwszym wyrazie.
ddiceman
Zobacz, czy dla tego elementu nie masz nadanego czasem stylu
Kod
text-transform: capitalize;

bo wydaje mi sie, ze to kwestia juz CSS a nie JS, ze Ci kapitalizuje pierwsze litery. Sprobuj dodac do elementu o id="desc"
Kod
style = "text-transform: none;"
Piotr.pot
Cytat(ddiceman @ 10.02.2009, 11:50:11 ) *
Zobacz, czy dla tego elementu nie masz nadanego czasem stylu
Kod
text-transform: capitalize;

bo wydaje mi sie, ze to kwestia juz CSS a nie JS, ze Ci kapitalizuje pierwsze litery. Sprobuj dodac do elementu o id="desc"
Kod
style = "text-transform: none;"


Tak to rzeczywiście to. Uf, dziękuję. W CSSie siedział capitalize.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.