Daugiau
Pasaulinio kintamojo apibrėžimas "JavaScript" funkcijoje
Ar galima apibrėžti visuotinį kintamąjį "JavaScript" funkcijoje?
Noriu naudoti kintamąjį trailimage
(deklaruotą funkcijoje makeObj
) kitose funkcijose.
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
var offsetfrommouse = [10, -20];
var displayduration = 0;
var obj_selected = 0;
function makeObj(address) {
**var trailimage = [address, 50, 50];**
document.write('<img id="trailimageid" src="' + trailimage[0] + '" border="0" style=" position: absolute; visibility:visible; left: 0px; top: 0px; width: ' + trailimage[1] + 'px; height: ' + trailimage[2] + 'px">');
obj_selected = 1;
}
function truebody() {
return (!window.opera && document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}
function hidetrail() {
var x = document.getElementById("trailimageid").style;
x.visibility = "hidden";
document.onmousemove = "";
}
function followmouse(e) {
var xcoord = offsetfrommouse[0];
var ycoord = offsetfrommouse[1];
var x = document.getElementById("trailimageid").style;
if (typeof e != "undefined") {
xcoord += e.pageX;
ycoord += e.pageY;
}
else if (typeof window.event != "undefined") {
xcoord += truebody().scrollLeft + event.clientX;
ycoord += truebody().scrollTop + event.clientY;
}
var docwidth = 1395;
var docheight = 676;
if (xcoord + trailimage[1] + 3 > docwidth || ycoord + trailimage[2] > docheight) {
x.display = "none";
alert("inja");
}
else
x.display = "";
x.left = xcoord + "px";
x.top = ycoord + "px";
}
if (obj_selected = 1) {
alert("obj_selected = true");
document.onmousemove = followmouse;
if (displayduration > 0)
setTimeout("hidetrail()", displayduration * 1000);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<img alt="" id="house" src="Pictures/sides/right.gif" style="z-index: 1; left: 372px;
top: 219px; position: absolute; height: 138px; width: 120px" onclick="javascript:makeObj('Pictures/sides/sides-not-clicked.gif');" />
</form>
</body>
</html>
478
3
Tiesiog deklaruokite
išorėje. Tada
Tikiuosi, kad tai padės.
Tiesiog deklaruokite jį už funkcijų ribų ir priskirkite reikšmes funkcijų viduje. Pavyzdžiui:
Arba tiesiog pašalinkite "var" iš kintamojo pavadinimo funkcijos viduje, taip pat jis taps globalus, bet geriau vieną kartą deklaruoti jį už funkcijos ribų, kad kodas būtų švaresnis. Taip pat tinka ir šis variantas:
Tikiuosi, kad šis pavyzdys paaiškina daugiau: http://jsfiddle.net/qCrGE/
Ne, negalite. Tiesiog deklaruokite kintamąjį už funkcijos ribų. Jo nebūtina deklaruoti tuo pačiu metu, kai priskiriate reikšmę: