По некоторым причинам, я не знаю, в большинстве случаев изменение externalHTML не допускается.
Я предполагаю, что это потому, что когда вы изменяете externalHTML элемента, вы фактически заменяете текущий элемент.
IMO, безопаснее заменить элемент, чем изменить его externalHTML.
В вашем случае, может быть, этого будет достаточно:
ОБНОВЛЕНИЯ ЗДЕСЬ:
<html>
<head><title>Test</title></head>
<body>
<div>
some content...
<div id="sub"></div>
</div>
<script type="text/javascript">
window.onload = function(){
var sub = document.getElementById('sub');
var txt="<p>Update Complete!</p>";
sub.innerHTML = txt;
alert('test 1');
txt="1 Error:<ul><li>Some Error</li></ul>";
sub.innerHTML = txt;
}
</script>
</body>
</html>