2013-10-16 34 views
1

我有一些困難得到這個工作。我想要做的是從onclick獲取動態變量,並將它們放入一個div中,然後將其附加到文檔中的另一個div。由於每個項目都有從數據庫查詢關聯的變量,因此我認爲從數據庫填充buildTicket()變量會更容易。如何將動態變量追加到div與jquery?

我知道我做錯了什麼。我無法弄清楚什麼。

如果你有更好的辦法,我全都耳熟能詳。

這裏是我的javascript:

<script type="text/javascript"> 
$(document).ready(function(){ 
$(function() { 
buildTicket = function(eventname,ticketprice,venueid,userid) { 
    $(".ticketbtn").click(function(){ 
     $(".ticketwindow").append("<div class='ticket'>" + eventname + " - " +  eventprice + "</div>"); 
    }); 
} 
}); 
</script> 

這裏是我的HTML:

<div class="ticketbtn" onclick="buildTicket('Some Show','12.00','1','2');"> 
     <img src="assets/images/tixicon.png" alt=""> <div class="eventname">Some Show</div> 
     <div class="ticketprice">Adult - 12.00 </div> 
    </div> 

<div id="ticketwindow"> 

</div> 

有人可以幫我想出解決辦法?

(抱歉的代碼格式。仍在試圖弄清楚如何正確使用計算器的形式。)

謝謝, 喬

+0

你沒有帶班'ticketwindow'的元素在你的HTML – NappingRabbit

+0

你有一個'document.ready'功能,這是重複的內部一個匿名的功能。此外,您的匿名函數在結束單個大括號,而不是'(function(){}())' –

+0

您正在附加多個點擊函數,因爲您的函數中有一個重複的循環刪除內聯onclick – Sergio

回答

0

首先,$(function() {相當於$(document).ready(function() {所以你只需要其中的一個。

其次,如果您使用jQuery綁定到click(),則不需要使用onclick屬性,反之亦然。

如果您只是使用onclick屬性,那麼您可以將您的文檔預處理程序和您的click()綁定在一起,並簡單地定義buildTicket()函數。

第三,eventprice變量在buildTicket()中被誤稱。

這裏是一個工作小提琴,使用jQuery綁定到您的按鈕div的click事件。 http://jsfiddle.net/BdJAL/

+0

到目前爲止好。的確很好。所以,通過這樣做,我將如何將其他變量(venuid,userid)添加到附加的東西。我實際上使用這些變量,以及當前的日期和時間來創建一個唯一的數字。 –

+0

有很多方法可以做到這一點。你可以把它們放在每個按鈕中的隱藏div中,並使用相同的方法來檢索它們,如我的小提琴中所示。那會是你以後的樣子嗎? –

+0

...或者將每個票據類型作爲一個對象存儲在您的javascript中,該實現稍微先進一些,但它會使您的代碼更加簡潔和可重用。 –

0

您對您按一下按鈕結合的onClick監聽器。

如果您必須使用onClick元素屬性,那麼儘管您應該熟悉Unobtrusive JavaScript的原理,但下面的代碼仍然有效。

$(document).ready(function(){ 
    var buildTicket = function(eventname,ticketprice,venueid,userid) { 
     $("#ticketwindow").append("<div class='ticket'>" + eventname + " - " + eventprice + "</div>"); 
    }); 
}); 
+0

我想我需要onclick =「buildTicket('一些顯示', '12 .00','1','2');「因爲每個」票證「的變量都會改變。有沒有更好的辦法? –

+0

假設票數據源是一個JSON文件,我會使用jQuery方法['.getJSON()'](http://api.jquery.com/jQuery.getJSON/)來構建一個'ticket'對象。對於其中的每一個,我都會渲染一個'

'並將通用的單擊事件處理程序綁定到它們全部。 –

0

我引用你的問題: 「我想從數據庫中填充buildTicket()變量會更容易。」

如果你想在你的JavaScript中獲得數據庫數據,那麼如何讓HTTP請求獲取它。顯然,你可以使用XMLHttpRequest以正常的XJAX方式執行此操作: http://www.w3schools.com/xml/xml_http.asp 或者您可以調用一些服務器端代碼來爲您生成JSON,並在<腳本>標記的腳本中引用它。 < script type =「text/javascript」src =「../ js/jsonFromServerSideCode。JSP」 > < /腳本>