[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Javascript array loop function not working

Posted on 2009-07-16
10
Medium Priority
?
377 Views
Last Modified: 2013-11-19
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

0
Comment
Question by:Shaye Larsen
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
  • 2
10 Comments
 
LVL 82

Accepted Solution

by:
hielo earned 1200 total points
ID: 24874375
>>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
 
LVL 1

Author Comment

by:Shaye Larsen
ID: 24875124
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
 
LVL 82

Assisted Solution

by:hielo
hielo earned 1200 total points
ID: 24875547
>>"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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 1

Author Comment

by:Shaye Larsen
ID: 24875840
Yeah, I have those elements with those IDs. Tomorrow I'll get in a make a test page, its on my local system.
0
 
LVL 12

Assisted Solution

by:Barry Jones
Barry Jones earned 300 total points
ID: 24879259
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
 
LVL 12

Expert Comment

by:Barry Jones
ID: 24879271
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
 
LVL 1

Author Comment

by:Shaye Larsen
ID: 24879400
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
 
LVL 12

Expert Comment

by:Barry Jones
ID: 24879590
Ah ok...
0
 
LVL 1

Author Comment

by:Shaye Larsen
ID: 24981890
I resorted to using jQuery and that made everything simple and fixed whatever was going wrong. Thanks for you help!
0
 
LVL 1

Author Closing Comment

by:Shaye Larsen
ID: 31604423
Thank you!
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Preface This is the third article about the EE Collaborative Login Project. A Better Website Login System (http://www.experts-exchange.com/A_2902.html) introduces the Login System and shows how to implement a login page. The EE Collaborative Logi…
A quick Powershell script I wrote to find old program installations and check versions of a specific file across the network.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
Suggested Courses

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question