2012-03-14 12 views
0

私は、ユーザーが(ドロップダウンリストから)選択したチケットの数を計算し、チケットの価格で乗算する関数を持っています(このチケットの価格はmy SQLデータベース)。Javascript関数の値を別の場所に表示する

機能自体は正常に動作します:

function quantityChange(selElem) { 
//Select the value of the drop down list  
var quantity = $('#showQuantity option:selected').val(); 
//get the value of the number from the tPrice column in 'ticket' table 
var ticket = parseInt(document.getElementById('ticketPriceHidden').value); 
//get the venue value 
var venue = document.getElementById('venuePlaceHidden').value; 
//multiply them together 
var total = quantity * ticket; 

document.getElementById('summary').innerHTML= 'You have chosen'+ ' ' + quantity + ' ' + 'tickets @' + ' ' + venue + ' = ' + ' ' + ' £' + total; 
} 

ユーザーは、この関数から計算された合計を見て、その後、彼らは非表示になります「続ける」ボタンを押すと、この関数は、「チケット」と呼ばれるのdivで呼び出されますこのdivと 'delivery'という新しいdivが表示され、結果は破棄されません。 私は、関数 'quantityChange(selElem)'の結果を 'summary'というまったく新しいdivに入れたいと思っています。これを行う方法はありますか?

ご協力いただきありがとうございます。

+0

戻り値で関数をより抽象的に記述してください。この値を使用して別の関数を呼び出して 'summary'に設定します。完了しました。 – Smamatti

+1

これは、jQueryとプレーンなDOMメソッドの興味深い組み合わせです。あなたは 'selElem'を何のために使っていますか?要素IDを関数にハードコーディングする代わりに、それをパラメーターにします。または、計算値をさらに柔軟にするには、結果を返します。 –

+0

お返事ありがとうございました。 @フェリックスキング、私はまだパラメータを渡すための構文と私が戻ってきているはずのものとのちょっとした悩みです。この機能をより柔軟にするためにコード化する必要があるものをさらに掘り起こすことができますか? –

答えて

0

代わりに値を返す汎用関数にします。あなたが呼び出す

function quantityChange(elementId) { 
    //Select the value of the drop down list  
    var quantity = $('#showQuantity option:selected').val(); 
    //get the value of the number from the tPrice column in 'ticket' table 
    var ticket = +$('#ticketPriceHidden').val(); 
    //get the venue value 
    var venue = $('#venuePlaceHidden').val(); 
    //multiply them together 
    var total = quantity * ticket; 

    $('#' + elementId').html('You have chosen'+ ' ' + quantity + ' ' + 'tickets @' + ' ' + venue + ' = ' + ' ' + ' £' + total); 
} 

:バーのinnerHTMLのは

Your returned amount is 1 
+0

お返事ありがとうございます。 –

1

一つのオプションを読んでいました

function foo() 
{ 
var a = 0; 
var b = 1; 
return a+b; 
} 

document.getElementById("bar").innerHTML = "Your returned amount is " + foo(); 

は、テキストは、関数のパラメータとして表示されたい要素のIDを渡すことです次のとおりです。

quantityChange('summary'); 

hieveより柔軟、あなたはすべての計算値を返すことができます(あなたがデータを提示する方法、この方法で実際の出力を

var data = quantityChange(); 

$('#summary').text('You have to pay ' + data.total + ' something'); 

function quantityChange() { 
    //Select the value of the drop down list  
    var quantity = $('#showQuantity option:selected').val(); 
    //get the value of the number from the tPrice column in 'ticket' table 
    var ticket = +$('#ticketPriceHidden').val(); 
    //get the venue value 
    var venue = $('#venuePlaceHidden').val(); 
    //multiply them together 
    var total = quantity * ticket; 

    return { 
     venue: venue, 
     quantity: quantity, 
     ticket: ticket, 
     total: total 
    }; 
} 

と呼び出し機能で出力を作成します)、値を計算する関数にハードコードされていません。

+0

返信いただきありがとうございます!これは素晴らしいです:)あなたが '呼び出し関数で出力を作成する'とコードを表示すると言うと、1つの質問です...これはvar data = quantityChange()新しい関数ですか? –

+0

これは関数ではありませんが、* in *関数であってもかまいません。コード内の他の場所、たとえばボタンのクリックに対する応答として。 –

+0

提案した内容を実装すると、コンソールから「document.getElementById( 'ticketPriceHidden')is null:/ –

0

これらの行が役立ちます。

最初の行はdivを作成します。

2行目は、関数の結果をそのdivに挿入します。

3行目は、id "xxx"を与えた要素のdivをハングアップします。

var div = document.createElement("div"); 
div.innerHTML = functionResult; 
document.getElementById("xxx").appendChild(div); 
+0

ご返信ありがとうございます。 –

関連する問題