2011-06-05 37 views
0

这是我的代码,我需要做的就是调用将内容写入到一个动态的div试图调用一个函数在JavaScript

 
<script language='javascript' type='text/javascript'> 
function getComments(id) 
{ 
    alert(id); 
} 
var resultSet=""; 
function CreateDiv() 
{ 

resultSet+="<br/><div id='"+rows.data[i].id+"'></div><script language='javascript' type='text/javascript'> getComments("+rows.data[i].id+"); <\/script>"; 
} 
window.onload=CreateDiv; 
</script> 

功能getComments不会被调用所有

功能

那是什么,我在这里失踪

+0

'getComments'应该被称为?不是这样。因为身体加载getComments应该被称为,但它不是在所有 – Kissaki 2011-06-05 10:13:43

+0

上面的代码块内标签上写入的,所以尽快。现在变得很明显,为什么'getComments'函数没有被调用。提示:检查报价。 – Sandhurst 2011-06-05 10:16:33

+0

很多变量在创建DIV获取调用不有意义 – Ibu 2011-06-05 10:18:33

回答

-1

尝试用这种替代createDiv功能:

function CreateDiv(){ 
    resultSet += "<br/><div id='"+rows.data[i].id+"'></div>" + getComments(rows.data[i].id); 
} 

它应该工作得很好。

+0

这是真的吗@Sandhurst?我认为你仍然会遇到与T.J.相关的未定义变量的问题。在他的回答中指出。 – DOK 2011-06-05 10:35:37

+0

我不明白为什么有人低估了唯一的直接和可接受的答案。 – 2011-06-05 10:36:23

+0

您最终会在resultSet字符串中出现字符串“undefined”(因为getComments不返回值,所以调用的结果是未定义的)。如果这真的是OP想要的行为(并且我认为它是,因为这是公认的答案),最好单独将它称为附加到字符串。 – 2011-06-05 11:44:15

4

有一些问题存在。

  1. 你引用rows,而不会有任何定义它,这将导致异常。
  2. 假设您在某处未显示rows,代码仅创建一个包含script标记的字符串并将该字符串放入resultSet。要使脚本标记内的代码运行,您必须在某个元素上指定resultSetinnerHTML
  3. 有没有在您的通话将生成的脚本中getComments额外)

另外:你id值似乎是数字(这是根据你将它们变成getComments与周围没有引号)。请注意,使用id以数字开头的值可以在HTML5中使用,但不能使用早期版本的HTML而不使用CSS,因此可能最好避免使用。

几乎可以肯定一个更好的方式做你实际上试图做的,你可以考虑一个单独的问题,概述了目标,你怎么到目前为止走近它,并要求替代品。

+0

'resultSet'被定义为:'var resultSet =“”;'(在'CreateDiv'上面) – 2011-06-05 10:21:46

+0

@Felix:谢谢。 “ – 2011-06-05 10:25:13

0

我建议你打破代码分解成步骤,而你调试。特别是在你填充resultSet的地方。在每个加号分解它。然后,您可以浏览它并查看它是如何填充的。

resultSet+="<br/><div id='"; 
resultSet+=rows.data[i].id; 

等等。

其次,查看源代码来查看它在运行时的外观。 HTML外观是否正确形成?

此外,我质疑了ResultSet中这最后<\/script>是否正确。

+1

*”另外,我在质疑结果集中的最终<\/script>是否正确“*结果是,结果字符串将是”“,因为在JavaScript中转义斜杠只会导致斜线。这是防止HTML解析器在字符串中看到“”并过早终止出现该字符串的脚本块的常用方法。 – 2011-06-05 10:30:35

+0

@ T.J。克罗德,感谢澄清。 – DOK 2011-06-05 10:36:05

相关问题