嗨,这是我的代码和jsfiddle中的html ......
这是.js:
function itemManager(){
var _me = null;
var _goldAsk = 0;
var _silverAsk = 0;
var _eurusdAsk = 0;
var construct = function(){
//init here
_me = $(this);
_bindHandlers();
_updateItem(125);
}
var _bindHandlers = function(){
_me.on('stockupdated', function(){
$('#gcost').text('Domanda oro: ' + (( _goldAsk / 31.1034768 ) / _eurusdAsk).toFixed(3) + ' Domanda argento: ' + (( _silverAsk / 31.1034768 ) / _eurusdAsk).toFixed(3) + ' Cambio €/$: ' + (_eurusdAsk).toFixed(3));
});
$('#calculate').on('click', function(){
alert("item gold ask(" + _goldAsk + ") vs silver ask(" + _silverAsk + ")");
});
$('#updateitem').on('click', function(){
_updateItem(250);
});
$('#btnGetTotalsGold').on('click', function(){
var grammsOfGold = $('#goldGramms').val().length ? parseInt($('#goldGramms').val()) : 0;
var carati = document.getElementById("carati").selectedIndex;
$(".container-oro").text('Valutazione per ORO: ' + (((( _goldAsk / 31.1034768 ) / _eurusdAsk) * (document.getElementsByTagName("option")[carati].value)) * grammsOfGold ).toFixed(2) + ' Carati selezionati: ' + (document.getElementsByTagName("option")[carati].value))
});
$('#btnGetTotalsSilver').on('click', function(){
var grammsOfSilver = $('#silverGramms').val().length ? parseInt($('#silverGramms').val()) : 0;
var millesimi = document.getElementById("millesimi").selectedIndex;
$(".container-argento").text(' Valutazione per ARGENTO: ' + (((( _silverAsk / 31.1034768 ) / _eurusdAsk) * (document.getElementsByTagName("option")[millesimi].value)) * grammsOfSilver ).toFixed(2) + ' Titolo selezionato: ' + (document.getElementsByTagName("option")[millesimi].value))
});
};
var _updateItem = function(cost){
$.ajax({
type: 'POST',
url: 'json.php',
dataType: 'json',
delay: 0,
success: function(data){
_goldAsk = parseFloat(data.GOLD.ask);
_silverAsk = parseFloat(data.SILVER.ask);
_eurusdAsk = parseFloat(data.EURUSD.ask);
_me.trigger('stockupdated');
}
})
}
setInterval( _updateItem, 60000);
construct();
}
window.onload = function(){
var item = new itemManager();
}
当我单击“btnGetTotalsSilver”计算Silver值时,脚本会显示获得“option”值的结果但与右边的值不匹配,它会得到黄金选择框值:
这个:(document.getElementsByTagName(“option”)[carati] .value))
不是这个:(document.getElementsByTagName(“option”)[millesimi] .value))
为什么?
感谢
答案 0 :(得分:0)
在btnGetTotalsSilver
的点击功能中,millesimi只是一个数字。当用户选择select中最顶层的选项时,millesimi变为0,没有别的。所以它与那个碰巧对于id有“millesimi”的特定选择元素没有内在联系!
因此,当您稍后执行document.getElementsByTagName("option")
时,您会在页面中获得所有选项的数组。这个数组从第一个数组开始(在第一个select
中)。因此,使用[millesimi]
进行索引(如果millesimi为0)将返回第一个选择中的第一个选项。
解决方案:只从正确的选择中获取选项
使用document.getElementById('millesimi').getElementsByTagName("option")
(或其jQuery等价物。)
请参阅new fiddle。
编辑:哦,当然,如果他们有类似的处理程序,你应该对页面上的其他选择做同样的事情。