replace tag names

Benchmark created by bo aye on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div id="testrunner"></div>

Setup

var elm = window.document.getElementById('testrunner');
    elm.innerHTML = '<table><tr><td height="4" width="5" style="background-color:red;"></td><td height="6" width="7" style="background-color:blue;"></td></tr></table>';
    
    var checktestStart = elm.getElementsByTagName('td');
    if (checktestStart.length !== 2) throw 'error';

Teardown


    var elm = window.document.getElementById('testrunner');
    var checktestEnd = elm.getElementsByTagName('th');
    if (checktestEnd.length !== 2) throw 'error';
    elm.innerHTML = '';
    
  

Test runner

Ready to run.

Testing in
TestOps/sec
jquery
$("#testrunner td").each(function() {
  var tmp = $('<div/>').append($(this).clone(true)).html().replace(/td/i,'th');
  $(this).after(tmp).remove();
});
ready
DOM
function replaceElm(oldTagName, newTagName, targetElm) {
  var target = targetElm || window.document;
  var allFound = target.getElementsByTagName(oldTagName);
  for (var i = 0; i < allFound.length; i++) {
    var tmp = document.createElement(newTagName);
    for (var k = 0; k < allFound[i].attributes.length; k++) {
      var name = allFound[i].attributes[k].name;
      var val = allFound[i].attributes[k].value;
      tmp.setAttribute(name, val);
    }
    tmp.innerHTML = allFound[i].innerHTML;
    allFound[i].parentNode.insertBefore(tmp, allFound[i]);
    allFound[i].parentNode.removeChild(allFound[i]);
  }
}

replaceElm('td', 'th', document.getElementById('testrunner'));
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.