einen dynamischen Wert bei href addieren?


opijkkk

Grünschnabel
Ich brauche Hilfe! Hätte jemand einen Vorschlag wie ich meine Idee verwirklichen kann. Ich will, dass der Link der Skript-datei sich an einer Stelle verändert. Ich will, dass an dieser Stelle die geografische Grösse der aktuellen Stadt von dem Benutzer kommt. Ich weiss, wie ich diese Grösse darstelle, aber den Link mit diesem Wert zu kombinieren, das weiss ich leider nicht. Kann ich das direkt in Html machen?

Javascript:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
  $.get("https://api.ipdata.co?api-key=test", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#city").html(response.city + ", " + response.region);
      $("#land").html(response.country_name + ", " + response.region);
          $("#long").html(response.latitude   + ", " + response.longitude );

    $("#response").html(JSON.stringify(response, null, 4));
  }, "jsonp");
</script>

PHP:
 <script type='text/javascript' id="weather-link" src='https://darksky.net/widget/default/<?php echo '<span id="long"></span>' ?>/uk12/de.js?width=100%&height=350&title=Basel&textColor=333333&bgColor=FFFFFF&transparency=false&skyColor=undefined&fontFamily=Default&customFont=&units=uk&htColor=333333&ltColor=333333&displaySum=yes&displayHeader=yes'></script>
<span id="long"></span>

Ich will den Wert, der sich aus dem Span-Element resultiert, zu dem Link addieren. Wie schaffe ich das nur? Ich glaube an die letzte Hoffnung
 
Zuletzt bearbeitet:

Jan-Frederik Stieler

Monsterator
Moderator
Hi,
den Wert von welchem Span?
Das einzigste Span welches ich sehe wird von Dir im Link ausgegeben, hat aber keinen Wert undein Span hat in einem Link auch nichts zu suchen.
Schreib den Wert in eine variable und geb diese aus.

Grüße
 

Jan-Frederik Stieler

Monsterator
Moderator
Hi,
wie gesagt dass span wird von Dir im Link ausgegeben, was nicht geht und hat aktuell keinen Wert. Von wo kommt denn der Wert her? Aus ner Datenbank, wird der berechnet …?

Wie gesagt schreib ihn in ne Variable und dann geb diese im Link aus.
 

Sempervivum

Erfahrenes Mitglied
Ich habe eine Weile gegrübelt, aber ich denke, jetzt verstehe ich, was Du vor hast: Die API, deren Daten Du da mit $.get holst, liefert u. a. Länge und Breite des Ortes und die möchtest Du in die URL einer zweiten API einfügen. Dazu habe ich dieses Testscript gemacht:
Code:
    <!-- in dieses Div werden die Wetterdaten eingetragen.
    Platziere es dort, wo sie angezeigt werden sollen. -->
    <div id="customize-script-container"></div>
    <script>
        var response = { latitude: 52.2167, longitude: 10.65 };
        var latlng = response.latitude + ',' + response.longitude;
        var scriptsrc = 'https://darksky.net/widget/default/' + latlng +
            '/uk12/de.js?width=100%&height=350&title=Basel&textColor=333333&bgColor=FFFFFF&transparency=false&skyColor=undefined&fontFamily=Default&customFont=&units=uk&htColor=333333&ltColor=333333&displaySum=yes&displayHeader=yes';
        var thescript = document.createElement('script');
        thescript.src = scriptsrc;
        document.querySelector('body').appendChild(thescript);
    </script>
Soweit getestet und funktioniert.
Das müsstest Du dann so in den Script übernehmen:
Code:
    <!-- in dieses Div werden die Wetterdaten eingetragen.
    Platziere es dort, wo sie angezeigt werden sollen. -->
    <div id="customize-script-container"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
  $.get("https://api.ipdata.co?api-key=test", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#city").html(response.city + ", " + response.region);
    $("#land").html(response.country_name + ", " + response.region);
    $("#long").html(response.latitude   + ", " + response.longitude );
    $("#response").html(JSON.stringify(response, null, 4));
    var latlng = response.latitude + ',' + response.longitude;
    var scriptsrc = 'https://darksky.net/widget/default/' + latlng +
            '/uk12/de.js?width=100%&height=350&title=Basel&textColor=333333&bgColor=FFFFFF&transparency=false&skyColor=undefined&fontFamily=Default&customFont=&units=uk&htColor=333333&ltColor=333333&displaySum=yes&displayHeader=yes';
    var thescript = document.createElement('script');
    thescript.src = scriptsrc;
    document.querySelector('body').appendChild(thescript);
  }, "jsonp");

</script>
Dieses konnte ich nicht testen, weil ich die erste API nicht hatte.
Versuche mal damit dein Glück!
 

Sempervivum

Erfahrenes Mitglied
PS: Ich sehe gerade, dass da auch der Ort angezeigt wird. Um auch den dynamisch anzuzeigen, müsste man es folgender Maßen erweitern:
Code:
    <!-- in dieses Div werden die Wetterdaten eingetragen.
    Platziere es dort, wo sie angezeigt werden sollen. -->
    <div id="customize-script-container"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
  $.get("https://api.ipdata.co?api-key=test", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#city").html(response.city + ", " + response.region);
    $("#land").html(response.country_name + ", " + response.region);
    $("#long").html(response.latitude   + ", " + response.longitude );
    $("#response").html(JSON.stringify(response, null, 4));
    var latlng = response.latitude + ',' + response.longitude;
    var scriptsrc = 'https://darksky.net/widget/default/' + latlng +
            '/uk12/de.js?width=100%&height=350&title=' + response.city + '&textColor=333333&bgColor=FFFFFF&transparency=false&skyColor=undefined&fontFamily=Default&customFont=&units=uk&htColor=333333&ltColor=333333&displaySum=yes&displayHeader=yes';
    var thescript = document.createElement('script');
    thescript.src = scriptsrc;
    document.querySelector('body').appendChild(thescript);
  }, "jsonp");

</script>
 

Sempervivum

Erfahrenes Mitglied
PPS: Da wird offenbar nur ein iFrame erzeugt. Möglicher Weise könnte man auf das Javascript verzichten, diesen iFrame statisch anlegen und dann dynamisch das src-Attribut setzen. Aber da es so wie oben funktioniert, steige ich da erst Mal nicht ein.
 

opijkkk

Grünschnabel
PPS: Da wird offenbar nur ein iFrame erzeugt. Möglicher Weise könnte man auf das Javascript verzichten, diesen iFrame statisch anlegen und dann dynamisch das src-Attribut setzen. Aber da es so wie oben funktioniert, steige ich da erst Mal nicht ein.
Ich weiss es nicht, wie ich mich nur bedanken sollte. Vielen Dank! Ich habe seit einer Woche daran gearbeitet. Ich musste sogar weinen. Vielen, vielen Dank!!!!!!!!!!!