Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 为什么在这种情况下我不能替换innerHTML_Javascript_Html - Fatal编程技术网

Javascript 为什么在这种情况下我不能替换innerHTML

Javascript 为什么在这种情况下我不能替换innerHTML,javascript,html,Javascript,Html,TD innerHTML内容中的某些内容阻止它被替换,请参见 即使存在这种隐藏的奇怪字符,如何强制以编程方式替换它 <table> <thead> <tr> <th scope="col" colspan="1">TITLE</th> </tr> <tr> <th>Column 1</th&g

TD innerHTML内容中的某些内容阻止它被替换,请参见

即使存在这种隐藏的奇怪字符,如何强制以编程方式替换它

    <table>
    <thead>
        <tr>
        <th scope="col" colspan="1">TITLE</th>
        </tr>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
        </tr>
    </thead>
    <tbody>
        <tr>

            <td><br>WEIRD 
                DO NOT WANT TO BE REPLACED</td> 


        </tr>
    </tbody>
</table>
试试这个:

var myTable = document.getElementsByTagName('table')[0];
var myTbody = myTable.getElementsByTagName('tbody')[0]; 
_tr = myTbody.getElementsByTagName("TR")[0];
_td = _tr.getElementsByTagName("TD")[0];
_td.innerHTML = "TEXT REPLACED";

myhead
替换为
myTbody
,将
\th
替换为
\td
这是一种非常奇怪的1998年JavaScript元素提取。更不用说你分配了这么多变量,你显然忘记了你定义了哪些变量

用现代JS来简化这一点:

var td = document.querySelectorAll("table tbody tr td")[0];
td.textContent="new text";
这将获取
表的所有
元素→表格主体→tr→td
chain,我们选择第一个,然后设置它的新内容作为文本,而不是HTML,因为如果内容来自任何“非硬编码”的内容,这将是愚蠢的,并且可能存在安全风险

如果我们想在其中添加DOM元素,我们会使用
document.createElement(…)
td.appendChild(…)
当然:

// find and clear the element
var td = document.querySelectorAll("table tbody tr td")[0];
td.textContent='';

// form new content and add it in
var p = document.createElement("p");
p = "check me out, I'm a paragraph";
td.appendChild(p);

保持简单:使用现代JavaScript。在过去的17年里,它变得相当简单。

myhead
\u th
是未定义的。用myTbody和MyCode替换它们,它会工作的。

myThead和
\th
还没有被声明,严肃地说,让我们不要继续使用1998年的JavaScript,使用现代的JS(我们已经有了
document.querySelector
很长一段时间了)完全同意,这是一个更好、更干净的解决方案。它是旧浏览器上的遗留应用程序。我的代码可以工作,只是有了这个特殊的内容它就不工作了。不要紧——旧浏览器已经过时了。从1月12日起,甚至连InternetExplorer8和更低版本的浏览器也被微软彻底抛弃了。不,您的代码绝对不起作用,因为您声明了太多的变量,以至于您甚至没有注意到您没有声明要使用的
\th
。您的代码已完全损坏,您需要清理它。谢天谢地,它可以帮助你找出哪种现代语法对你的目标受众来说是安全的。是的,这很重要,因为所有的用户都是公司用户,他们目前都在使用IE8,而不是从1月12日开始。任何真正的公司用户都不能再实际使用IE8或更低版本,因为微软最终关闭了所有类型的支持,甚至是公司付费的支持。仍然使用IE8或更低版本的用户将永远无法获得安全更新,任何漏洞和漏洞仍然存在,将继续存在。除非你说的是安装了非法windows拷贝的公司。不管怎样,他们已经有点孤立无援了。
// find and clear the element
var td = document.querySelectorAll("table tbody tr td")[0];
td.textContent='';

// form new content and add it in
var p = document.createElement("p");
p = "check me out, I'm a paragraph";
td.appendChild(p);