1Cougar
asked on
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!
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;
});
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Cheers,