Javascript jQuery不是';t创建表行元素
我正在创建一个JavaScript进度条,进度条本身和详细信息都在一个表中。现在,我正在创建它,以便页面中需要的只是一个Javascript jQuery不是';t创建表行元素,javascript,jquery,html,Javascript,Jquery,Html,我正在创建一个JavaScript进度条,进度条本身和详细信息都在一个表中。现在,我正在创建它,以便页面中需要的只是一个div,然后在创建该类时,该类将填充其余部分。因为它在一个表中,所以bar和message应该位于不同的行上,但是当我尝试使用jQuery创建行时,它们没有被生成,并且唯一被放入表中的是两个td元素 下面是我目前拥有的代码。我尝试了几种不同的方法来完成它,我认为这是可行的 我已经尝试使用.wrap(“”)在我将其放入表中之前尝试获取它,并在对表的调用中(即tdMessage.
div
,然后在创建该类时,该类将填充其余部分。因为它在一个表中,所以bar和message应该位于不同的行上,但是当我尝试使用jQuery创建行时,它们没有被生成,并且唯一被放入表中的是两个td
元素
下面是我目前拥有的代码。我尝试了几种不同的方法来完成它,我认为这是可行的
- 我已经尝试使用
在我将其放入表中之前尝试获取它,并在对表的调用中(即.wrap(“”)
和tdMessage.wrap(“”)
)tdMessage.wrap(“”).html()
- 我尝试了
和document.createElement('tr')
并在将其放入表中时调用$('')
李>.html()
var tdMessage = $(document.createElement('td'));
tdMessage.prop('id', this.MessageId.substr(1));
tdMessage.css('text-align', 'center');
//tdMessage.wrap('<tr></tr>');
//var trRow2 = $(document.createElement('tr'));
var trRow2 = $('<tr></tr>');
trRow2.html(tdMessage);
tdMessage = null;
var divBar = $(document.createElement('div'));
divBar.prop('id', this.BarId.substr(1));
divBar.css('width', '0%');
divBar.css('height', '15px');
divBar.css('background', 'url(images/LoadingBarBG.gif)');
var tdBar = $(document.createElement('td'));
tdBar.css('border', '1px #B0B1B1 solid');
tdBar.css('padding', '1px');
tdBar.html(divBar);
//tdBar.wrap('<tr></tr>');
divBar = null;
//var trRow1 = $(document.createElement('tr'));
var trRow1 = $('<tr></tr>');
trRow1.html(tdBar);
tdBar = null;
var tblInner = $(document.createElement('table'));
tblInner.prop('width', '400');
tblInner.prop('cellpadding', '0');
tblInner.prop('cellspacing', '0');
tblInner.prop('border', '0');
tblInner.html(trRow1.html() + trRow2.html());
trRow1 = null;
trRow2 = null;
var tdMessage=$(document.createElement('td');
tdMessage.prop('id',this.MessageId.substr(1));
css('text-align','center');
//tdMessage.wrap(“”);
//var trRow2=$(document.createElement('tr');
var trRow2=$('');
html(tdMessage);
tdMessage=null;
var divBar=$(document.createElement('div');
divBar.prop('id',this.BarId.substr(1));
css('width','0%');
css('height','15px');
css('background','url(images/LoadingBarBG.gif)');
var tdBar=$(document.createElement('td');
css('border','1px#b0b1b1b1b1 solid');
css('padding','1px');
html(divBar);
//tdBar.wrap(“”);
divBar=null;
//var trRow1=$(document.createElement('tr');
var trRow1=$('');
html(tdBar);
tdBar=null;
var tblInner=$(document.createElement('table');
tblInner.prop('width','400');
tblInner.prop('cellpadding','0');
tblInner.prop('cellspacing','0');
tblInner.prop('border','0');
html(trRow1.html()+trRow2.html());
trRow1=null;
trRow2=null;
我可能只是错过了什么,但我一辈子都想不出来。一切看起来都应该正常,其他一切似乎都正常
此外,它不断生成的HTML要么只是将td
两个元素都放在表中,而周围没有tr
元素,要么甚至只是将条td
放在表中,并忽略其中一条消息
谢谢你的帮助 不要使用.html()
,因为您拥有的一切都是jQuery对象,而不是原始html,而是将单元格追加到行中:
trRow2.append(tdMessage);
trRow1.append(tdBar);
然后将行追加到表中:
tblInner
.append(trRow1)
.append(trRow2);
要将div插入单元格时,请对其执行相同的操作:
tdBar.append(divBar);
我认为
.html()
和.append()
之间的唯一区别是.html()
替换了所有现有的html,而.append()
只是将它附加到了它的下面。不对吗?不,不对.html()
只接受html字符串,不接受对象.append()
接受对象或HTML。如果要将字符串传递给.html()
,那么它将销毁并替换所有的是。哦,好的。我明白了。因此,如果我要使用.html()
我必须做一些类似trRow1.html(tdBar.html())的事情代码>?是的,但是当你得到tdBar的html时,它是内部html,不包括
,所以如果你这样做的话,你需要包装。是的,我刚才看到了。非常感谢。