在javascript中从另一个函数调用一个函数

时间:2021-12-23 19:42:28

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

我正在尝试从另一个javascript函数displayTable()调用函数getDetails()。单击“我的CD事实”按钮时会调用displayTable()。

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.

好吧,它不适合我。我猜它有点蠢,但我无法搞清楚。我尝试用firebug进行诊断,并说没有定义getDetails()。

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?

另外,我有一个基本的css文件,用于以特定样式显示表。这也不起作用。是因为我将它与身体相连并且我在头部使用它?

<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

3 个解决方案

#1


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.

getDetails()不是Javascript buit-in函数。它是用户定义的功能。编写Head First Ajax一书的人在第24页定义了他们的getDetails()版本。

#2


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

#3


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. document.write清除了页面的其余部分,因此您插入的脚本已经消失。您可以尝试使用document.getElementById(“id”)。InnerHtml到div / span,而不是使用document.write。 (我不是一个js专家 - 所以你可能想谷歌那个。),而不是document.writing。

  3. what rony said, but with a couple of single inverted commas.

    罗尼说,但有一些单引号。

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

    document.write(“ ”);

#1


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.

getDetails()不是Javascript buit-in函数。它是用户定义的功能。编写Head First Ajax一书的人在第24页定义了他们的getDetails()版本。

#2


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

#3


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. document.write清除了页面的其余部分,因此您插入的脚本已经消失。您可以尝试使用document.getElementById(“id”)。InnerHtml到div / span,而不是使用document.write。 (我不是一个js专家 - 所以你可能想谷歌那个。),而不是document.writing。

  3. what rony said, but with a couple of single inverted commas.

    罗尼说,但有一些单引号。

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

    document.write(“ ”);