最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html - Call one function from another function in javascript - Stack Overflow

programmeradmin3浏览0评论

I'm still a novice with web technologies and I have a few questions in line with the following code.

I'm trying to call a function getDetails() from another javascript function displayTable(). displayTable() gets invoked on clicking the button 'My CD Facts'.

Well, its not working for me. I guess its some thing daft but I'm not able to figure out. I tried to diagnose it with firebug and it says getDetails() is not defined.

Also, I have a basic css file for displaying the table in a particular style. That's not working either. Is it because I linked it in the body and I'm using it in the head?

<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>

cheers

I'm still a novice with web technologies and I have a few questions in line with the following code.

I'm trying to call a function getDetails() from another javascript function displayTable(). displayTable() gets invoked on clicking the button 'My CD Facts'.

Well, its not working for me. I guess its some thing daft but I'm not able to figure out. I tried to diagnose it with firebug and it says getDetails() is not defined.

Also, I have a basic css file for displaying the table in a particular style. That's not working either. Is it because I linked it in the body and I'm using it in the head?

<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>

cheers

Share Improve this question edited Jul 1, 2009 at 19:56 Arnkrishn asked Jun 25, 2009 at 16:52 ArnkrishnArnkrishn 30.5k40 gold badges116 silver badges128 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

getDetails() is not a Javascript buit-in function. It is a user defined function. The people that wrote the book Head First Ajax defined their version of the getDetails() on page 24.

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

A couple of minor mistakes.

  1. document.write clears off the rest of the page, so the script you have slotted in has gone. You could try instead of using document.write, using document.getElementById("id").InnerHtml to a div / span. (im not a js expert - so you may want to google that.), instead, for the document.writing.
  2. what rony said, but with a couple of single inverted mas.

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

发布评论

评论列表(0)

  1. 暂无评论