[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 282
  • Last Modified:

PHP scope issue

Hello,

I know I have a scope problem but I can't seem to figure it out.  I have the code below, where I call procedure "doOnLoad()" when the body loads.  In there I initialize a combo box and trees.  I have an Event handler "onChange" but it only updates my tree once.  I have an alert and it gets called twice.  Ideally I think I should just be reloading the XML when the combo box changes, but when I tried to declare the trees in doOnLoad() and then update the XML in doTree(), I got an error "Trees not defined".  I guess if I could declare the trees in doOnLoad and be able to access them and update XML in doTree, that would be the best, but I don't know how to go about this.

I hope I am making sense.  Below is my code.  Thank you!

function doTree(){
	alert("In tree!");
	
	var trees = {};

trees["treebox1"] = new dhtmlXTreeObject("treebox1","100%","100%",0);
trees["treebox2"] = new dhtmlXTreeObject("treebox2","100%","100%",0);
trees["treebox3"] = new dhtmlXTreeObject("treebox3","100%","100%",0);
			trees["treebox1"].enableDragAndDrop(true);
			trees["treebox1"].attachEvent("onDrag", function() { return false; });
			trees["treebox1"].setSkin("dhx_terrace");
			trees["treebox1"].setImagePath("../../DHTMLX/dhtmlxTree/dhtmlxTree/codebase/imgs/csh_dhx_terrace/");
			trees["treebox1"].loadXML("getTree.php?what=1&thisID=0",function(){
			//trees["treebox1"].openAllItems(0);
			});
			trees["treebox2"].enableDragAndDrop(true);
			trees["treebox2"].attachEvent("onDrag", function() { return false; });
			trees["treebox2"].setSkin("dhx_terrace");
			trees["treebox2"].setImagePath("../../DHTMLX/dhtmlxTree/dhtmlxTree/codebase/imgs/csh_dhx_terrace/");
			trees["treebox2"].loadXML("getTree.php?what=2&thisID="+document.getElementById('thisid').value,function(){
			//trees["treebox2"].openAllItems(0);
			});
			return;
	
}



function doOnLoad() {
	window.dhx_globalImgPath = "../../DHTMLX/dhtmlxCombo/codebase/imgs/";
var comboObject2 = {
    parent: "combo_zone2",
    width: 500,
    readonly: true,
    xml: "getContractXML-1.php"
}
var combo2 = new dhtmlXCombo(comboObject2);
combo2.setComboText("Please select a company");
combo2.DOMelem_input.style.color='#E6E6E6';
combo2.attachEvent("onChange",function(){ 
combo2.DOMelem_input.style.color= 'black';
document.getElementById('thisid').value=combo2.getSelectedValue();
doTree();
return true;
});
	

Open in new window

0
1Cougar
Asked:
1Cougar
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
Either, you declare the variable as global, or you have to pass the variable as parameter
0
 
1CougarAuthor Commented:
Thanks, that was totally it.  I somehow wasn't seeing where to declare it but have it all sorted out now.

Cheers,
0

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now