Javascript array loop function not working

I have some areas on my page with tinyMCE editors. I need to loop through the areas and return some values in an array.

I have to perform a few function inside of the loop as well such as removing unneeded content and replacing some invalid characters.

Here is what I have. It is currently not working.

Thank you for your help!
function removeElement(parentElm, childDiv){
	if (document.getElementById(childDiv)) {     
		var child = document.getElementById(childDiv);
		var parent = document.getElementById(parentElm);
		parent.removeChild(child);
	}
}
 
function getElementsByClass(node,searchClass,tag) {
var classElements = new Array();
var els = node.getElementsByTagName(tag); // use "*" for all elements
var elsLen = els.length;
var pattern = new RegExp("\\b"+searchClass+"\\b");
for (i = 0, j = 0; i < elsLen; i++) {
 if ( pattern.test(els[i].className) ) {
 classElements[j] = els[i];
 j++;
 }
}
return classElements;
}
//this script gets the contents of the edit areas
function areaGetContents(){
	var i;
	var contentAreas = getElementsByClass(document,'contentArea','*');
	var fullContent = new Array();
	for (i=1; i<=contentAreas.length; i++) {
		 document.getElementById('editorArea_'+i).innerHTML = tinyMCE.get('editorArea_'+i).getContent();
		 removeElement('contentArea_'+i,'editorArea_'+i+'_parent');
		 fullContent[i] = contentAreas[i].innerHTML;
		 var divModStart = fullContent[i].replace(/<textarea style="display: none;"/g, '<div');
	 	 var divModEnd = divModStart.replace(/textarea>/g, 'div>');
 		 var ltMod = divModEnd.replace(/\&lt;/g, '<');
		 var gtMod = ltMod.replace(/\&gt;/g, '>');
		 fullContent[i] = gtMod;
	     alert(fullContent[i]);
	}
}

Open in new window

LVL 1
Shaye LarsenAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

hieloCommented:
>>for (i=1; i<=contentAreas.length; i++)
You probably meant:

"less than" NOT "less than or equal to". Also, arrays are 0-indexed:
for (i=0; i<contentAreas.length; i++)
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Shaye LarsenAuthor Commented:
K, I made changes to do that, but it still doesn't work.

I am getting the following error on line 5 that has

parent.removeChild(child);


error from firebug:

Error: uncaught exception: [Exception... "Node was not found"  code: "8" nsresult: "0x80530008 (NS_ERROR_DOM_NOT_FOUND_ERR)"  location: "http://fabuso/js/sitecreator_edit_page_scripts.js Line: 82"]
0
hieloCommented:
>>"Node was not found"
There's the reason. Within your loop you are doing:
removeElement('contentArea_'+i,'editorArea_'+i+'_parent');
 
So, when i=0, you are actually calling:
removeElement('contentArea_0','editorArea_0_parent');
 
So, do you have some element with id="contentArea_0" and also WITHIN that element you need some other element with id="editorArea_0_parent".
 
The same rationale applies when i=1, etc. I can't tell you more since you didn't post much. If you have a link to your page, please post it.

Open in new window

0
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

Shaye LarsenAuthor Commented:
Yeah, I have those elements with those IDs. Tomorrow I'll get in a make a test page, its on my local system.
0
Barry JonesCommented:
Are you sure that the child is a child of the parent that you are passing in?

Why not let the removeElement() function determine the parent?
removeElement = function(ele){
	var ele_ret = ele;
	if (ele && (ele.parentNode)){ele.parentNode.removeChild(ele);}
	return ele_ret;
}

Open in new window

0
Barry JonesCommented:
Also, your removeElement() function expects the parent passed in first, and in your code it appears that you have reversed the order of the parameters:
removeElement('contentArea_'+i,'editorArea_'+i+'_parent');

Open in new window

0
Shaye LarsenAuthor Commented:
Yeah, the naming convention would make it seem like so. tinyMCE produces a lot of markup when they convert your textareas into editors. Since I have multiple areas on one page it produces the topmost element for the new tinyMCE markup as editorArea_0_parent, editorArea_1_parent, editorArea_2_parent, etc. My elms that contain the tinyMCE editors all have a class of 'contentArea' and an id that is contentArea_0, contentArea_1, contentArea_2 respectively.
0
Barry JonesCommented:
Ah ok...
0
Shaye LarsenAuthor Commented:
I resorted to using jQuery and that made everything simple and fixed whatever was going wrong. Thanks for you help!
0
Shaye LarsenAuthor Commented:
Thank you!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Languages and Standards

From novice to tech pro — start learning today.