将属性添加到动态创建的表

时间:2018-07-05 05:44:10

标签: html5 attributes tablehtml

你好,

我正在使用外部软件来生成报告。 我要放桌子,然后将它打印到div中的网站上。 在生成该表之前,我无权访问此表,因此在呈现网站之前,我无法设置任何属性。

因此,在呈现过程的最后一步,我需要向该表中添加属性,这与ID或Class无关。

结构类似于:

 <div class="data" id="Checklist">
     <p>Some text</p>

     <!-- There is this table -->
     <table style="...">...</table>

     <p></p> 
 </div>

我正在使用IE v11。

我尝试过这样的事情(什么都没有发生):

  document.getElementById("Checklist").childNodes[0].className = "TestClassName";

也(它会产生mi错误:对象不支持属性或方法'setAttribute')

 document.getElementById('news').childNodes[0].setAttribute( 'class', new_class );

还有其他想法吗?

4 个答案:

答案 0 :(得分:1)

如果使用ChildNodes,它将返回节点列表中的所有空白,因此请使用子代,以便仅返回子代元素

<div class="data" id="Checklist">
     <p>Some text</p>

     <!-- There is this table -->
     <table style="...">...</table>

     <p></p> 
 </div>

将您的js更改为

document.getElementById("Checklist").children[0].className="TestClassName";
document.getElementById('news').children[0].setAttribute( 'class', new_class );

它将起作用

答案 1 :(得分:0)

尝试添加类

document.getElementById("Checklist").classList.add("TestClassName");


document.getElementById('Checklist').childNodes[1].setAttribute('class', 'table1');
.TestClassName {
  color: red;
}

.table1 {
  border: solid 1px;
}
<div class="data" id="Checklist">
  <p>Some text</p>

  <!-- There is this table -->
  <table style="...">...</table>

  <p></p>
</div>

答案 2 :(得分:0)

尝试

 <div class="data" id="Checklist">
     <p>Some text</p>

     <!-- There is this table -->
     <table style="...">...</table>

     <p></p> 
 </div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
    $("#Checklist").children('table').attr("class", "class_name");
</script>

用您的班级名称更改班级名称

答案 3 :(得分:0)

假设这是您的代码,

<div class="data" id="Checklist">
    <p>Some Text</p>
    <div id="WhereTableWillGo">
        <table></table>
    </div>
    <p></p>
</div>

您可以在window.onload函数中进行更改,

window.onload = function() {
     document.getElementById("Checklist").getElementsByTagName("table")[0].classList.add("NewClass");
     // OR 
     document.getElementById("Checklist").getElementsByTagName("table")[0].setAttribute("class", "TestClassName");
}

或者您可以通过执行以下操作异步获取表,并在插入表之前进行更改,

var xhttp = new XMLHttpRequest;
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        // Do Alterations to Table
        document.getElementById("WhereTableWillGo").innerHTML = xhttp.responseText;
    }
}
xhttp.open("GET", "https://website.com");
xhttp.send();