最近公司有个项目需要迭代,这里详细就不多叙述了。其中有个页面的功能是根据后端返回的值动态添加表格,用比较直白的话讲就是,需求上在tbody中新增tr,tr中新增td和相应的内容。这里我简单贴一下相关的前端js代码供大家参考一下:
var tr = doc.createElement('tr')
tr.setAttribute('class', 'traceInfo-' + (i + 1))
tr.innerHTML = '' + formatDate(new Date(traceInfo[i].createTime), 'dd') + '日' + formatDate(new Date(traceInfo[i].createTime), 'hh') + '时' + formatDate(new Date(traceInfo[i].createTime), 'mm') + '分 '
+ '至 '
+ '' + formatDate(new Date(traceInfo[i + 1].createTime), 'dd') + '日' + formatDate(new Date(traceInfo[i + 1].createTime), 'hh') + '时' + formatDate(new Date(traceInfo[i + 1].createTime), 'mm') + '分 '
+ '' + traceInfo[i].content + ' '
+ ' '
+ ' '
+ '' + (traceInfo[i].remark || '') + ' '
比较简单的一段tr的innerHTML相关代码,当时在办公室测试好多遍都是很好的,但是一去现场,(在公司测试都是使用谷歌和IE11,现场使用的是IE9
)那家伙,不说崩坏的多厉害,至少是28层的高楼塌得只剩下14层了,于是只能上网求助度娘梅梅帮忙解决一下,这里大概列举下百度上的几种解决方案:
第一种:
var tdStr = '' + formatDate(new Date(traceInfo[i].createTime), 'dd') + '日' + formatDate(new Date(traceInfo[i].createTime), 'hh') + '时' + formatDate(new Date(traceInfo[i].createTime), 'mm') + '分 '
+ '至 '
+ '' + formatDate(new Date(traceInfo[i + 1].createTime), 'dd') + '日' + formatDate(new Date(traceInfo[i + 1].createTime), 'hh') + '时' + formatDate(new Date(traceInfo[i + 1].createTime), 'mm') + '分 '
+ '' + traceInfo[i].content + ' '
+ ' '
+ ' '
+ '' + (traceInfo[i].remark || '') + ' '
$('这里选择tr元素').html(tdStr)
使用JQuery的html属性新增元素的内容,但是我失败了~~~~
第二种:
var td1 = $("xxxxx ")
tr.appendChild(td1)
这种方法其实成功了一半,因为,最后的结果就是tr,td确实都正确加载在了页面上,但是td中的值却没有。不过正是因为这一半的启发,让我有了一些想法,所以就决定动手试一试:
var tdStartTime = doc.createElement('td')
tdStartTime.setAttribute('class','time-hour-minute')
tdStartTime.setAttribute('align','right')
tdStartTime.innerText = formatDate(new Date(traceInfo[i].createTime), 'dd') + "日" + formatDate(new Date(traceInfo[i].createTime), 'hh') + "时" + formatDate(new Date(traceInfo[i].createTime), 'mm') + "分"
var tdZhi = doc.createElement('td')
tdZhi.innerText = '至'
var tdEndTime = doc.createElement('td')
tdEndTime.setAttribute('class','time-hour-minute')
tdEndTime.setAttribute('align','right')
tdEndTime.innerText = formatDate(outTime, 'dd') + "日" + formatDate(outTime, 'hh') + "时" + formatDate(outTime, 'mm') + "分"
var tdContent = doc.createElement('td')
tdContent.innerText = traceInfo[i].content
var td1 = doc.createElement('td')
var td2 = doc.createElement('td')
var tdRemark = doc.createElement('td')
tdRemark.setAttribute('class','last-td-style')
tdRemark.innerText = (traceInfo[i].remark || '')
tr.appendChild(tdStartTime)
tr.appendChild(tdZhi)
tr.appendChild(tdEndTime)
tr.appendChild(tdContent)
tr.appendChild(td1)
tr.appendChild(td2)
tr.appendChild(tdRemark)
果然,问题完美解决,同时这样写法也适用于IE高版本浏览器和ff、chrome。希望对大家有用~