2009-06-25 22 views
1

Ich bin immer noch ein Anfänger mit Web-Technologien und ich habe ein paar Fragen im Einklang mit dem folgenden Code.Rufen Sie eine Funktion von einer anderen Funktion in Javascript

Ich versuche, eine Funktion getDetails() aufzurufen, von einer anderen Javascript-Funktion displayTable(). displayTable() wird beim Klicken auf die Schaltfläche "My CD Facts" aufgerufen.

Nun, es funktioniert nicht für mich. Ich denke, es ist etwas doof, aber ich bin nicht in der Lage, es herauszufinden. Ich habe versucht, es mit Firebug zu diagnostizieren und es heißt, dass getDetails() nicht definiert ist.

Auch ich habe eine grundlegende CSS-Datei in einem bestimmten Stil die Tabelle für die Anzeige. Das funktioniert auch nicht. Ist es, weil ich es im Körper verbunden habe und ich es im Kopf verwende?

<script type="text/javascript"> 
var xmlDoc; 

function displayTable() 
{ 
var artistName; 
if (window.XMLHttpRequest) 
    { 
    xmlDoc=new window.XMLHttpRequest(); 
    xmlDoc.open("GET","Artists.xml",false); 
    xmlDoc.send(""); 
    xmlDoc=xmlDoc.responseXML; 
    } 
else if (ActiveXObject("Microsoft.XMLDOM")) 
    { 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async=false; 
    xmlDoc.load("Artists.xml"); 
    } 

document.write("<table class=\"artistTable\" border='1'>"); 
document.write("<th>Artist</th> <th>Title</th>"); 
var x=xmlDoc.getElementsByTagName("CD"); 
for (i=0;i<x.length;i++) 
    { 
    artistName = x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue; 
    document.write("<tr><td><a href=\"javascript:getDetails(artistName);\">"); 
    document.write(artistName); 
    document.write("</a></td></tr>"); 
    } 
document.write("</table>"); 
} 

function getDetails(artistName) 
{ 
    alert(artistName); 
} 

</script> 
</head> 
<body> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<form> 
<input type="button" value="My CD Facts" onclick="displayTable()"/> 
</form> 
</body> 
</html> 

prost

Antwort

1
document.write("<tr><td><a href=\"javascript:getDetails(" + artistName + ");\">"); 
1

Ein paar kleine Fehler.

  1. document.write löscht den Rest der Seite, so dass das Skript, das Sie eingefügt haben, verschwunden ist. Sie könnten versuchen, anstatt document.write mit document.getElementById ("id"). InnerHtml zu einem div/span. (Ich bin kein js-Experte - also möchten Sie vielleicht das googlen.), stattdessen für das document.writing.
  2. was Rony sagte, aber mit ein paar einzelnen Anführungszeichen.

    document.write (“< tr> < td> < a href = \ "javascript: getDetails ('" + Künstler +"'); \ ">");

2

getDetails() ist keine Javascript-Buit-in-Funktion. Es ist eine benutzerdefinierte Funktion. Die Leute, die das Buch Head First Ajax geschrieben haben, haben ihre Version der getDetails() auf Seite 24 definiert.

Verwandte Themen