У меня есть файл .js, который выглядит примерно так:функция внутри функции Javascript
function regionmap() {
var width = 960,
height = 500,
centered;
var projection = d3.geo.albersUsa()
.scale(width)
.translate([width/2, height/2]);
var path = d3.geo.path()
.projection(projection);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.attr("id","svg");
var states = svg.append("g")
.attr("id", "states")
d3.json("readme.json", function(json) {
d3.select("svg").selectAll("path")
.data(json.features)
.enter()
.append("path")
.attr("d", path)
.on("click", clicked)
.append("title")
.text(function(d) { return d.properties.name; });
});
listofnames = new Array();
listofnames.push("Regions:");
function clicked (d) {
var regionname = d.properties.name;
var currentclass = d3.select(this).attr("id") ;
if (currentclass == "active") {
d3.select(this).attr("id", "nonactive");
} else {
d3.select(this).attr("id", "active");
}
var contains;
var index;
for (var i = 0; i < listofnames.length; i++) {
if (regionname != listofnames[i]) {
contains = false;
} else {
contains = true;
index = i;
break;
}
}
if (contains == false){
listofnames.push(regionname);
} else if(contains == true){
listofnames.splice(index,1);
}
var x=document.getElementById("demo");
x.innerHTML=listofnames;
}
function sendingvariable(){
window.location.href = "../php/fileregions.php?name=" + listofnames;
}
}
Дело в том, что при вызове функции из HTML Я сначала вызвать функцию regionmap на клик (OnClick = "regionmap ()), который работает хорошо.Однако мне тогда нужно вызвать функцию sendvariable из html, и я не могу. Любой способ решить это?
Покажите нам немного больше кода, пожалуйста? какие переменные? (потому что прямо сейчас мое решение, удалите '}' из строки 4 и переместите его в конец строки 1. Затем выполните функции a и b. – Biketire
Изучите образец модуля здесь: http: //www.adequatelygood .com/JavaScript-Module-Pattern-In-Depth.html – n8wrl
Затем просто объявите его как 'window.b || (window.b = function() {});' – Ian