2014-07-23 169 views
0

我正在研究一個基本上是精心製作的新聞摘要的大學項目。我需要在點擊主題時動態生成文章標題列表。 我已經能夠做到這一點,並使用for循環動態分配列表ID和值。 每個列表都是可點擊的,並調用一個參數化函數,參數爲列表值。 我不確定如何定義函數和語法來使其成爲可能。在JavaScript中調用帶參數的函數需要幫助

我需要這樣做,以便點擊時的每個標題都可以使用AJAX與servlet交互,並基於它們的值生成與標題相對應的文章。

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 


<script type="text/javascript"> 
    function change() { 
     var i = 0; 
     var set; 
     document.getElementById('content').innerHTML = ''; 
     for (i = 1; i < 6; i++) { 
      var div = document.getElementById('content'); 
      div.innerHTML = div.innerHTML + '<a href="#" onClick="rem()">' 
        + '<h2 id="theading'+i+'" value="'+i+'">HEADING ' + i 
        + ' WILL GO HERE</h2></a><br>'; 
     } 
    } 

    function rem(value) { 
     document.getElementById('content').innerHTML = value 
       + '<h1>THE NEWS WILL GO HERE</h1>'; 
    } 
</script> 
</head> 

<style type="text/css"> 
* { 
    list-style: none; 
} 

a { 
    text-decoration: none; 
    color: inherit; 
} 

a:hover { 
    color: orange; 
} 
</style> 

<body> 
    <a href="#" onClick="change()"><h3>TOPIC</h3></a> 
    <div id="content"></div> 
</body> 
</html> 

我怎樣寫代碼,以便REM()函數可以用其作爲其對應的列表參數的值被調用。

回答

0

我會完全重寫你的第一個功能:

function change() { 
    var i = 0; 
    var set; 
    var div = document.getElementById('content'); 
    div.innerHTML = ''; 
    for (i = 1; i < 6; i++) { 
     var a = document.createElement('a'); 
     a.href = "#"; 
     a.onclick = rem.bind(null, i); // Here is the magical part 
     a.innerHTML = '<h2 id="theading'+i+'">HEADING ' + i 
       + ' WILL GO HERE</h2>'; 

     div.appendChild(a); 
     div.appendChild(document.createElement('br')); 
    } 
} 
+0

哇!它的確像魔術一樣運作。萬分感謝。代碼整潔有效。 :) –

0

您需要在價值傳遞給方法rem()

我不能絕對肯定它的價值,你wan't通過了,但改變:

onclick="rem()" 

到:

onclick="rem(' + i + ')" 

將調用方法與物權的i當鏈接的價值被點擊。

之後,你可以也應該從你的h2標記中丟棄value="'+i+'。這不是有效的HTML。

乾杯。

+0

它工作,謝謝。 –

+0

@AnjulGarg很高興聽到:),也歡迎來到stackoverflow。我建議先閱讀http://stackoverflow.com/tour,然後接受其中一個答案作爲解決方案(如果問題已解決,如果不解決,請在評論中提供更多信息或修改您的問題)。包括你在內的人獲得了聲望點。因此,信譽體系是爲什麼PPL首先在這裏活躍起來的核心原因之一。 Thnx提前。 –

0

擁抱this的力量。

onClick="rem(this)" 

將傳遞到被點擊的元素的引用。然後,您可以使用父母和孩子遍歷DOM,找到其他元素,而無需處理雜亂的ID。

+0

它傳遞瀏覽器地址作爲參考。即 http:// localhost:8888 /# 新聞將會出現在這裏 但是,我需要傳遞一些獨特的東西,這將幫助我爲每個標題調用不同的函數。 –

+0

您可能想要嘗試模板庫。它允許你創建帶嵌入式變量的HTML模板,而不是從JS中的字符串構建東西。看看underscore.js,但還有很多其他的。 –

+0

會做,謝謝。我仍然處於js的早期階段,所以試圖保持簡單。 –