2

对任何类型的编程都很陌生,如果这是一团糟,很抱歉!我有一个叶绿素图,其中颜色由滑块确定,效果很好。但是,当单击地图上的每个特定形状时,我需要显示用于确定文本字段中颜色的值 - 并且在使用滑块时仍然会更新。

我可以让它为点击内的区域正确计算,但它不会随幻灯片更新,所以我认为我需要它在点击之外,然后只是在点击时显示/隐藏。但在点击之外,我没有“this”可供参考,也无法进行我需要的迭代。我一直在尝试我遇到的所有可能的事情,现在完全迷失了。

非常感谢您的任何帮助/解释。

我所拥有的是:

function fromslide(){




// Set properties for each county.
for (var i=0; i < counties.length; i++) {
ctys = counties[i];
//console.log (ctys);
var id = ctys.data("id");
alloc= ((parseInt(Landvar[id].val) * landweight) + (parseInt(Popvar[id].val) * popweight)  + (parseInt(Poorvar[id].val) * poorweight));
console.log(alloc);




// Set county color.
ctys.attr({
fill: getColor(alloc/ 1000000),
});


//console.log (selectedcnty);
console.log (window.selectedcnty);



//this is what's not working
if (selectedcnty = String(id)) { thisalloc = ((parseInt(Landvar[id].val) * landweight) + (parseInt(Popvar[id].val) * popweight)  + (parseInt(Poorvar[id].val) * poorweight));}
$("#allocfield").val(thisalloc);        







ctys.click(function() {


for (var i=0; i < counties.length; i++) {
var ctys = counties[i];
var id = ctys.data("id");
ctys.attr({stroke: "#fff" });
};
this.toFront();
this.attr({stroke: "orange" });
var name = this.data("id"); 
$("#namefield").val( Popvar[name].name);    
$("#popfield").val( Popvar[name].val);
$("#landfield").val( Landvar[name].val);
$("#poorfield").val( Poorvar[name].val);


console.log(thisalloc);

window.selectedcnty = name;  

console.log (window.selectedcnty);
});                      
4

2 回答 2

0

您可以在任何函数之外创建一个全局变量,然后您可以从函数调用中访问它。你是对的this- 它不是一个变量,而是一个特殊的关键字,它引用“拥有”正在执行的方法的对象实例。为了通过函数调用将数据从一个函数传递到另一个函数,您需要将其存储在一个全局变量中。只需在任何函数之外声明变量,并在函数内引用它而不使用this

var myVar = 0;
function myFunc() {
    myVar++;
    alert(myVar);
}
于 2013-04-08T17:15:40.053 回答
0

我得到它的工作添加

window.selectLand = parseInt(Landvar[name].val); 
window.selectPop = parseInt(Popvar[name].val); 
window.selectPoor = parseInt(Poorvar[name].val); 

到点击功能,然后将其用于上面的“thisalloc”。它可以满足我的需要,但这似乎是一种不优雅的方式。似乎必须有一种方法来引用已经存在的“alloc”实例。

于 2013-04-11T04:30:38.213 回答