Исходный код
var res = document.getElementById("result");
var data = eval('(' + result + ')');
var text = data.status;
while (res.firstChild)
res.removeChild(res.firstChild);
res.appendChild(document.createTextNode(data.status));
for (var i = 0; i < data.result.length; i++)
{
res.appendChild(document.createElement("br"));
res.appendChild(document.createTextNode(data.result[i]));
}
Что не так в исходном коде
Самое главное — это, конечно, смешение двух ответственностей: собственно выполнение внешнего кода и показ результатов выполнения.
Второй момент — неясные названия переменных, не очень точно отражающие смысла хранящихся в них значений.
Третий момент, больше субъективный, связан с вёрсткой блоков, в которых выводится результат выполнения. Я бы отвел под статус и результат два разных блока. Также вместо методов удаления и создания узлов можно пользоваться свойствами innerText
и innerHTML
.
Вариант рефакторинга исходного кода
function showEvalResults(results) {
document.getElementById('eval-status').innerText = results.status;
document.getElementById('eval-results').innerHTML = results.result.join
}
var eval_results = eval('(' + expression + ')');
showEvalResults(eval_results);