-2

我在 HTML 中有以下代码,并想使用 javascript 替换它们

原始代码

<td class="tabButton dijitHidden tweetsTabButton selectedTab" dojoattachpoint="tweetsTabButton" data-type="twitter" style="display: none;">
Tweets
<div class="arrow-up"><div class="arrow-up-content"></div></div>
</td>

将其替换为

<td  dojoattachpoint="tweetsTabButton" data-type="twitter" style="display: none;">
<h2>Tweets</h2>

</td>
4

2 回答 2

0

这是另一种方法:

//index [0] assumes you want to modify the first td matching this set of class rules..
var td = document.getElementsByClassName("tabButton dijitHidden tweetsTabButton selectedTab")[0];

//remove the attributes, as requested
td.removeAttribute('class');
td.removeAttribute('dojoattachpoint');

//sets the innerHTML of the element, overwriting the original one
td.innerHTML = '<h2>Tweets</h2>';

请注意,td仍然会display:none使其不可见,您可以添加:

td.style.display = "table-cell";

使其动态可见。不要忘记在 DOM 准备好/加载后运行脚本。

JSFiddle

于 2012-06-13T00:06:46.343 回答
0

根据问题内容和当前出现的评论,您需要:

  1. Tweets用元素包装文本,特别是<h2></h2>
  2. 从 中删除class属性td以禁用 CSS
  3. 使用纯 JavaScript
  4. 假设table ID礼物并使用data-type属性作为验证!

请参阅此工作小提琴示例!

脚本

// get the table by ID
var table = document.getElementById("table-id");   

// get the table cells
var cells = table.getElementsByTagName("td");   

// for each table cell found
for (var i = 0; i < cells.length; i++) {   

    // get the attribute 'data-type'
    var status = cells[i].getAttribute("data-type");

    // if 'data-type' contains the value 'twitter'
    if ( status == "twitter" ) {   

        // create the 'h2' element
        var h2 = document.createElement("h2");

            // append a textnode to the created element with the text 'Tweets'
            h2.appendChild(document.createTextNode('Tweets'));

        // remove the current text 'Tweets'
        cells[i].removeChild(cells[i].firstChild);


        // remove the class atrribute
        cells[i].removeAttribute('class');

        // append the new element to the current 'td'
        cells[i].appendChild(h2);
    }  
}

注意:可以进行优化,但您可以看到正在发生的事情。还有评论可以指导您完成,在生产时删除。

于 2012-06-12T23:48:27.400 回答