Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery不是';t创建表行元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery不是';t创建表行元素

Javascript jQuery不是';t创建表行元素,javascript,jquery,html,Javascript,Jquery,Html,我正在创建一个JavaScript进度条,进度条本身和详细信息都在一个表中。现在,我正在创建它,以便页面中需要的只是一个div,然后在创建该类时,该类将填充其余部分。因为它在一个表中,所以bar和message应该位于不同的行上,但是当我尝试使用jQuery创建行时,它们没有被生成,并且唯一被放入表中的是两个td元素 下面是我目前拥有的代码。我尝试了几种不同的方法来完成它,我认为这是可行的 我已经尝试使用.wrap(“”)在我将其放入表中之前尝试获取它,并在对表的调用中(即tdMessage.

我正在创建一个JavaScript进度条,进度条本身和详细信息都在一个表中。现在,我正在创建它,以便页面中需要的只是一个
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,不包括
,所以如果你这样做的话,你需要包装。是的,我刚才看到了。非常感谢。