Announcement

Collapse
No announcement yet.

xml variable auslesen und an Javascript Funktion übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xml variable auslesen und an Javascript Funktion übergeben

    Hallo ihr,

    ich bins mal wieder...sorry ich bin Anfänger und bleib deswegen ständig irgendwo hängen. Naja mit der Hoffnung, dass sich einer von euch erbarmt schildere ich mal mein Problem:

    In einer XSL Datei möchte ich über einen Link mehrere Javascript Funktionen aufrufen. Allerdings wird nur die erste aufgerufen, alle anderen nicht mehr (hab mal ein alert zum testen eingefügt). So sieht es aus:

    <a href="#" onclick="createplayer({./@pfad},true);return false; change_headline({./@headline},true);return false;"
    onBlur="change_color_blur({./@pfad},true);return false;">


    So sieht mein Javascript aus:

    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">

    <![CDATA[

    function createplayer(theFile, go) {
    var s = new SWFObject("player.swf","playerID","500","395","7") ;
    s.addParam("allowfullscreen","true");
    s.addVariable("file",theFile);
    s.addVariable("width","500");
    s.addVariable("height","395");
    s.addVariable("displayheight","500");
    s.addVariable("overstretch","fit");
    if (go) { s.addVariable("autostart","true"); }
    s.write("video_beitrag");
    }

    function change_headline(headline,go) {
    alert("test_click");
    document.getElementById('ueberschrift_beitraege'). innerHTML = headline;
    document.getElementById(headline).style.background Color= '#25547E';

    }

    change_color_blur(headline,go){
    alert("test_blur");
    "document.getElementById('headline').style.backgro undColor= '#C2CF07';

    }

    ]]></script>

    Oder darf man das mit document.getElementById nicht im Javascript abschnitt, sondern nicht direkt im Link machen? Wenn ich es allerdings so löse, geht auch nichts:

    function change_headline(headline,go) {
    var s = headline;
    s.write("ueberschrift_beitraege");

    }

    Im Gesamten sieht das so aus:

    <xsl:template match="video">

    <table border ="0" cellpadding="0" cellspacing="0" style="margin-bottom:1px;" width="275" id={./@headline} class="text_klein" >
    <tr>
    <td width="130" rowspan="2">

    <a href="#" onclick="createplayer({./@pfad},true);return false; change_headline({./@headline},true);return false;
    onBlur="change_color_blur({./@pfad},true);return false;">

    <img width="130" heigt="72" border="0"><xsl:attribute name="src"> <xsl:value-of select="./bild" /> </xsl:attribute>
    </img> </a>
    </td>
    <td valign="middle" height="30" class="text_fett">
    <a href="#" onclick="createplayer({./@pfad},true);return false;" class="text_fett">
    <span class="text_fett" style="margin-left:5px"><xsl:value-of select="./headline"/></span></a>
    </td>
    </tr>
    <tr>
    <td width="143" style="background-color:#C2CF07" valign="top" height="42" class="text_klein" >
    <a href="#" onclick="createplayer({./@pfad},true);return false;" class="text_klein" >
    <span class="text_klein" style="margin-left:5px"> <xsl:value-of select="./text1"/></span>
    <span class="text_klein" style="margin-left:5px"><xsl:value-of select="./text2"/></span>
    </a>
    </td>
    </tr>
    </table>

    </xsl:template>

    Ich lese also aus einer XML Datei den Pfad zu einem Bild die headline und einen Text aus. Wenn ich über das Bild und den Text (alles in Table) mit mouse fahre, soll die Hintergrundfarbe der Tabelle sich ändern. Wenn ich wieder mit Maus weggehe (woanders klicke) soll sie sich wieder ändern. Die Tabelle hat eine Id, welche der headline entspricht, damit jedes ausgelesene xml element direkt angesprochen werden kann.

    Kann man das mit <table id={./@headline} überhaupt so machen?

    Würde mich riesig über eine Antwort freuen.

    Liebe Grüße,

    Tamara

  • #2
    Wenn das DOM noch nicht komplett etabliert ist, geht der Objektzugriff über die ID ins Leere. Rufe die letzten Codezeilen also onload auf:

    Code:
    window.onload=function(){
      // Code ...
    }
    Prüfe außerdem den durch die Tranformation erzeugten HTML-Code mittels Standalone-Prozessor wie Saxon und Co. Außerdem ist die erwartete JS-Variable vermutlich ein String, der in Anführungszeichen stehen sollte. Ändere den XPath-Ausdruck: onclick="createplayer('{./@pfad}',true);...".

    Comment

    Working...
    X