簡體   English   中英

如何跨函數/變量訪問javascript值?

[英]How do I access a javascript value across functions/variables?

因此,分為三個小部分:

1)的MaxMind地理IP查找是通過IP地址得到我們國家代碼:

var onSuccess = function(x){

var ip = x.traits.ip_address;
document.getElementById('ip_address').value = ip;

var country_code = x.country.iso_code;
document.getElementById('ip_country_code').value = country_code;

…

};

2)包含稅號小數的國家/地區參考數組:

// Array of values for tax rates
var tax_rates= new Array();
tax_rates["noteu"]=0.0;
tax_rates["ES"]=21.0;
tax_rates["AU"]=20.5;
tax_rates["BE"]=21.7;
…

3)TaxPrice函數,該函數使用那些小數之一來計算稅額,然后以訂閱形式計算應付總額。 注意XXXXX:

function TaxPrice()
{
var taxprice=0;
XXXXX
return taxprice;
}

1)中的document.getElementById位顯然可以更新隱藏字段或其他HTML元素。

我知道該怎么做XXXXX如果是手動下拉的用戶選擇。

但是,如何根據IP地址國家/地區代碼從數組中獲取稅小數並進入TaxPrice函數? (即在javascript中,而不是更新HTML元素)。

祝大家新年快樂。

更新:需要明確的是,我不需要知道如何將其放入下拉列表中,我已經可以做到這一點,在這種情況下,不應允許用戶選擇自己的納稅國家/地區,根據IP地址自動設置。 因此,非代碼措辭將類似於:

taxprice EQUALS tax_rate.value ACCORDING TO ip_address_code

您是否正在尋找元素屬性之類的東西? Mydiv.tax =稅值; 元素的屬性是在不同功能之間進行通信的一種優雅方式。 您可以將任何值分配給任何元素。 只要Basic元素存在,就可以從JavaScript中的任何函數中檢索值。

一種實現方法是在成功回調中設置全局的selectedCountryCode變量,並在TaxPrice數組中引用tax_rates[selectedCountryCode] (應該是一個對象,如nnnnnn所指出的)

 (function () { var selectedCountryCode = ""; var onSuccess = function(x) { var ip = x.traits.ip_address; document.getElementById('ip_address').value = ip; selectedCountryCode = x.country.iso_code; // <-- Set selectedCountryCode for later use document.getElementById('ip_country_code').value = selectedCountryCode; // <-- Set dropdown value }; document.getElementById("ip_country_code").addEventListener("change", function() { selectedCountryCode = this.value; console.log(TaxPrice()); }); // Object of values for tax rates var tax_rates = {}; tax_rates["noteu"] = 0.0; tax_rates["ES"] = 21.0; tax_rates["AU"] = 20.5; tax_rates["BE"] = 21.7; function TaxPrice() { var taxprice = 0; taxprice = tax_rates[selectedCountryCode]; return taxprice; } })(); 
 Change Me: <select id="ip_country_code"> <option value="noteu">noteu</option> <option value="ES">ES</option> <option value="AU">AU</option> <option value="BE">BE</option> </select> 

因此,感謝您的建議。 不知道我是否知道它是如何工作的,但是經過一番摸索,現在可以了。 與原始問題中的代碼相比,我不得不:

1)在其他所有內容的最上方添加一個與IP查找代碼無關的全局變量(即IP onSuccess變量中現在沒有對country_tax引用):

var country_tax;

2)將TaxPrice函數中的XXXXX替換為:

var country_tax = document.getElementById("ip_country_code").value;
var taxprice = taxes_from_database[country_tax];

因此,完整的TaxPrice函數最終結果為:

function TaxPrice() 
{
var taxprice = 0;
var country_tax = document.getElementById("ip_country_code").value;
var taxprice = tax_rates[country_tax];
return taxprice;
}

似乎不需要嵌套函數或閉包或任何非常復雜的東西。 (對於代碼而言)將tax_rates設置為數組還是對象都沒有關系,結果是相同的,盡管我想理解為什么在這種情況下為什么建議在數組上推薦對象。

而且-給定TaxPrice是從表單字段而不是從IP onSuccess函數內部獲取值的-我不知道為什么我需要頂部的全局變量聲明,如果有人想去解釋一下……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM