ie8下代码出错,有什么办法吗?该怎么处理

ie8下代码出错,有什么办法吗?
function Init(id) {
  txtcorpname = document.getElementById("name");
  dataShow = document.getElementById("dataShow");
  var p = getAbsPoint(name);
  dataShow.style.left = p.x + 'px';
  dataShow.style.top = p.y + name.offsetHeight + 'px';
  name.onclick = dataShow.onclick = function (e) {
  e = e || event;
  var t = e.target || e.srcElement

  if (t.tagName.toLowerCase() == 'li') {
  name.type = 'text'; //为元素指定类型
  name.value = t.innerHTML.replace(/<.+?>/gim, '').replace(/^\s+|\s+$/g, "");
dataShow.style.display = "none";
  return;
  }
  if (e && e.stopPropagation) {
  //W3C取消冒泡事件
  e.stopPropagation();
  } else {
  //IE取消冒泡事件
  window.event.cancelBubble = true;
  }
  };
  document.body.onclick = function (e) {
  dataShow.style.display = "none";
  };
};
function getSearchKeys() {

  var s = name.value;
  if (s == '') {
  dataShow.style.display = "none";
  return;
  }
  var arr = ['<ul>'];
  for (var i = 0; i < keys.length; i++) {
  if (keys[i].indexOf(s) >= 0) {
  arr.push('<li>' + keys[i] + '</li>');
  }
  }

  if (arr.length > 1) {
  arr.push('</ul>');
  dataShow.innerHTML = arr.join('');
  dataShow.style.display = "block";
  } else {
  dataShow.style.display = "none";
  }
}

上述代码在其它ie版本和Mozilla Firefox都没有问题,但是在ie8种出错,指向dataShow.innerHTML = arr.join('');这一句。
怎么办?

------解决方案--------------------
dataShow = document.getElementById("dataShow");

变量名称和id名称最好不要采用相同的名称,一般是这个导致的。你可以改成

dataShow = document.getElementById("dataShowXX");


<div id="dataShowXX"
------解决方案--------------------
<div id="dataShow"></div>

<script>
var dataShow = document.getElementById("dataShow");

var arr = ['<ul>'];
arr.push('<li>' +'5' + '</li>');
arr.push('</ul>');
dataShow.innerHTML=arr.join('');
</script>

ie8下测试通过。

------解决方案--------------------
function getSearchKeys
中是不是要重新取啊
加上 myname = document.getElementById("myname");
dataShow = document.getElementById("dataShow");
最好变量和ID严格区分开来,别给自己找麻烦