2011-06-05 78 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

相關問題