表格单元格中预填充的文本显示为“未定义”.当在JS中添加HTML标签时

Pre-populated text in Table Cell showing as "undefined" when HTML tags are added in JS

本文关键字:未定义 当在 JS HTML 标签 添加 填充 单元格 文本 表格 显示      更新时间:2023-09-26

我卡住了。我有一个科学怪人的代码从这里和那里获得一个理想的结果。这段JS代码用于一个表(如下所示),该表是由一个单独的程序(CMS Supervisor)生成的,该程序基于一个每5秒循环一次的脚本输出到一个HTML文件。其中Table元素是静态的。

有一个page_template.htm, CMS在写入实际的HTML文件page_.htm并将表插入到任何额外的编码之前读取…该表是在以下标签中编写的:

<CVSUP_BODY></CVSUP_BODY> '' Within these tags is where the JS code has to be placed on the template in order to be pulled from the template and placed on the actual page_htm that is viewed.

我创建了一个提琴,然而,由于某种原因,眨眼没有效果(可能是我选择不准确的框架和扩展中的设置)。尽管如此,我做了一个test_page.htm,可以让一切工作,除了在"最古老的呼叫等待"显示"未定义"的文本,它闪烁并根据情况突出显示BG,但它不会显示实际的文本(时间持续时间)应该在那里。

这是小提琴…任何帮助都将非常感激。如果我遗漏了什么,请告诉我。

注:我知道"眨眼"在这个论坛和许多其他论坛上都是一个令人不快的话题,所以我想向任何对这个功能有不快口味的人保证,这个属性不是用于公共领域,只是用来引起对呼叫中心呼叫队列中超过2分钟的呼叫的注意。:)

JS:

 function formatCells(table) {
 var tbody = table.getElementsByTagName('tbody')[0],
    cells = tbody.getElementsByTagName('td'),
    colors = ['red', 'black', 'white'],
    blinkme = "<blink>" + cells.textContent + "</blink>";    

我也试过了(没有效果):

blinkme = "<blink>",
blinkme += cells.textContent,
blinkme += "</blink>";     

JS继续说:

for (var c = 0, len = cells.length; c < len; c++) {
    if (cells[c].cellIndex > 1) {
        switch (parseInt((cells[c].textContent || cells[c].innerText), 10)) {
            case 1:
                cells[c].style.backgroundColor = colors[2];
                cells[c].style.color = colors[1];
                break;
            case 2:
            case 3:
            case 4:
            case 5:
                cells[c].style.backgroundColor = colors[0];
                cells[c].style.color = colors[2];
                cells[c].style.fontWeight = '900';
                cells[c].innerHTML = blinkme;
                break;
        }
      }
   }
}
formatCells(document.getElementsByTagName('table')[0]);
function blinkIt() {
   if (!document.all) return;
   else {
      for (i = 0; i < document.all.tags('blink').length; i++) {
        s = document.all.tags('blink')[i];
        s.style.visibility = (s.style.visibility == 'visible') ? 'hidden' : 'visible';
    }
  }
}
HTML:

 <TABLE BORDER=1 CELLPADDING=1 CELLSPACING=0>
    <TR>
        <TH>Skill</TH>
        <TH>Calls Waiting</TH>
        <TH>Oldest Call</TH>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Affiliates</TD>
        <TD ALIGN=CENTER>2</TD>
        <TD ALIGN=CENTER>2:01</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agent Other</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agent to Agent Inbou</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agent Web Assist</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agt D Supplies</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agt D Contracting</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>2:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agt D Other</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Agt D Scheduling</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>4:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>AOR Agent</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>AOR CB</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>AOR Other</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>AOR Sales</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>AOR_LTD Sales</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Appointment Setting</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Career Recruiting</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Co 011</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Escalation</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Executive Operators</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Mktr Other</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Mktr Sched</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Other Benefit Verif</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Other Claim Status</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Other Other</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Other UW Interview</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Part D Esc</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Rx Other</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Rx Sched</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>:00</TD>
    </TR>
    <TR ALIGN=RIGHT>
        <TD ALIGN=LEFT>Spanish</TD>
        <TD ALIGN=CENTER>0</TD>
        <TD ALIGN=CENTER>2:01</TD>
    </TR>
</TABLE>

第5行('td').textContent未定义。您需要将cells[c].innerHTML = blinkme更改为cells[c].innerHTML = '<blink>' + cells[c].textContent + '</blink>';

在blinkIt方法中,您可以使用querySelectorAll来收集blink标签,如下所示:

var blinkTags = document.querySelectorAll('blink');
for (i = 0; i < blinkTags.length; i++) {
    s = blinkTags[i];
    s.style.visibility = (s.style.visibility == 'visible') ? 'hidden' : 'visible';
}

同样,在主体的onload事件发生时,blinkIt方法是未定义的。您必须在定义blinkIt函数时设置间隔。我把这个留给你。