А какой бред-то, всё работает!
Хотя да, если убрать var из функции тоже работает, и так лучше будет.
document.getElementById('subm').onclick = addElement;
var my_div = newCnv = null;
function addElement() {
if (document.getElementsByTagName("canvas")[0] == null) {
newCnv = document.createElement("canvas");
newCnv.setAttribute('id', 'field1')
newCnv.setAttribute('height', 320)
newCnv.setAttribute('width', 480)
newCnv.innerHTML = "Скорее всего этот браузер не поддерживает HTML5";
var ctx = newCnv.getContext('2d');
/* Рисует контур прямоугольника на всю ширину и высоту canvas */
ctx.strokeRect(0, 0, newCnv.width, newCnv.height);
// добавляем только что созданный элемент в дерево DOM
my_div = document.getElementById("main");
//вставляем newCnv внутрь main
my_div.appendChild(newCnv);
}
return false; //чтобы добавленные элементы не пропадали из-за перезагрузки страницы
}