Im trying to write a plugin which allows an author to search through the html elements and delete if required..The problem is my delete function only deletes the 1st element and then every 2nd one after that.. I want the function to delete every element..I would be greatful if someone could have a look at my code and see whats wrong..
Thanks
CKEDITOR.dialog.add('searchelement', function (editor) { function getEditor() { var editorX = editor; return editorX; } function deleteNodes(searchElement, i) { var parent = searchElement.parentNode; var elementX = new CKEDITOR.dom.element( searchElement ); elementX.remove(); } return { title : "Search Element", minWidth : 350, minHeight : 140, contents : [{ id : 'find', label : 'find', accessKey : 'M', elements : [{ type : 'hbox', widths : ['230px', '90px'], children : [{ type : 'select', id : 'findX', label : 'Find:', labelLayout : 'horizontal', accessKey : 'F', items : [ ['input', 'input'], ['table', 'table'] ], }, { type : 'button', align : 'left', style : 'width:100%', label : 'Delete Nodes', onClick : function () { var dialog = this.getDialog(); var editor = getEditor(); var requestedElement = dialog.getValueOf('find', 'findX'); alert("requested element : " + requestedElement); // 'input' var documentWrapper = editor.document; // editor = editor1 in my case var documentNode = documentWrapper.$; // or documentWrapper['$']... need to find out exactly what this code does var elements = documentNode.getElementsByTagName(requestedElement); var elementExist = (elements.length); if (elementExist) { for (var i = 0; i < elements.length; ++i) { var element = elements[i]; deleteNodes(elements[i], i); } } else { alert('No elements found'); } } } ] }, { type : 'hbox', widths : ['230px', '90px'], children : [{ type : 'text', id : 'replace', label : 'Replace:', isChanged : false, labelLayout : 'horizontal', accessKey : 'R' }, { type : 'button', align : 'left', style : 'width:100%', label : 'Replace with', isChanged : false, onClick : function () {} } ] }, ] } ], }; });
Thanks
Re: HTML element search plugin
Re: HTML element search plugin
Thanks..That worked..I would however be most greatful if you could explain why the loop does not work the other way around?? I find it very odd and frustrating to say the least!!
Re: HTML element search plugin
Your original loop iterates the list forwards, removing items as it goes:
By reversing the loop, you move through the list backwards:
Re: HTML element search plugin
Re: HTML element search plugin
For example, when you remove the item at index 0, the item at index 1 moves to index 0, the item at index 2 moves to index 1, etc.
You then increment your index variable, skipping the element that's just moved to fill the gap.
Re: HTML element search plugin
Re: HTML element search plugin