var ReturnThisHTML = (function(div){
return function(obj) {
div.innerHTML="";
div.appendChild(obj);
return div.innerHTML;
}
})( document.createElement( 'div' ) );
var x=document.createElement('tr');
//Cтрока кривая, дабы не вводить переменных
x.innerHTML='<tr> <td class="number"> + (id + 1) + </td> <td>'
+ 'val.txt +</td> <td class=" + val.imp + "> + val.imp + </td> <td class="done">'+ '<button>Done</button></td> </tr>';
alert(ReturnThisHTML(x))
//Далее
//document.querySelector('tbody').innerHTML += ReturnThisHTML(x);
Хотя имхо проще добавить к tbody строку вместе с тегами tr ///