Having trouble with a function hitting the page as soon as possible, so i need to write it in pure javascript and include it in the head. not sure how to go about it, because as i understand it, by using .replace() the new element will be moved to a different location on the page. jQuery's replaceWith() behavior is ideal.
$("#imagefiles").replaceWith("<input type='file' name='imagefiles' id='imagefiles' />");
Having trouble with a function hitting the page as soon as possible, so i need to write it in pure javascript and include it in the head. not sure how to go about it, because as i understand it, by using .replace() the new element will be moved to a different location on the page. jQuery's replaceWith() behavior is ideal.
$("#imagefiles").replaceWith("<input type='file' name='imagefiles' id='imagefiles' />");
Share
Improve this question
asked Apr 15, 2012 at 19:24
technopeasanttechnopeasant
7,93933 gold badges93 silver badges151 bronze badges
2
|
3 Answers
Reset to default 9var image = document.getElementById('imagefiles'), parent = image.parentNode,
tempDiv = document.createElement('div');
tempDiv.innerHTML = "<input type='file' name='imagefiles' id='imagefiles' />"
var input = tempDiv.childNodes[0];
parent.replaceChild(input, image);
DEMO
EDIT as per am not i am:
var image = document.getElementById('imagefiles'), parent = image.parentNode,
input = document.createElement('input');
input.id = input.name = "imagefiles";
input.type = 'file';
parent.replaceChild(input, image);
edited DEMO
const node = new DOMParser().parseFromString(html, 'text/html').body.childNodes[0];
document.getElementById(id).replaceWith(node);
let element = document.getElementById("imagefiles");
element.insertAdjacentHTML("afterend","<input type='file' name='imagefiles' id='imagefiles' />");
element.parentNode.removeChild(element);
Years later. There is now an childNode.replaceWith() but it is not strictly equivalent to the JQuery replaceWith(); Nor is it compatible with I.E.
The above code creates a document fragment from the given HTML, and inserts it after the original element in the DOM and then deletes the original element, effectively replacing it.
https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/replaceWith
.replace()
is for strings. Please don't use it for DOM. Could you describe your issue a little better? Are you saying you want an element to be replaced as soon as it appears, and not wait for the rest of the DOM to be ready? – user1106925 Commented Apr 15, 2012 at 19:28