javascript,innerHTML或者innerText获取的内容是否字符串?为啥和另外一个字符串相比结果不对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript,innerHTML或者innerText获取的内容是否字符串?为啥和另外一个字符串相比结果不对相关的知识,希望对你有一定的参考价值。

var tdd = document.getElementById(tdId);
if(tdd.innerhtml=="男") alert("de");
tdId是一个表格单元格的id(就是td对应的),单元格里的内容明明就是男,为什么不出现alert的结果呢?
if(tdd.childNodes[0].nodeValue==“男")的结果也不出来alert,后来我用 if(tdd.childNodes[0].nodeValue==x.childNodes[0].nodeValue)也不可以,其中x=xmlDoc.getElementsByTagName("content")[0];就是xml文件中第一个content对应的内容是男,这样也还是不出来alert函数,为什么呢,求高手指点,急急急!!!!!!!

如果tdId是单元格的ID而不是一个变量的话,那应该写成字符串形式的,即:getElementById("tdId")

测试代码:

<table border="0" cellpadding="0" cellspacing="0">

  <tr>

    <td id="tdId">男</td>

  </tr>

</table>

<script type="text/javascript">

var tdd = document.getElementById("tdId");

if(tdd.innerHTML == "男") alert("de");

</script>

其实,这个应该能看到错误提示的(如图)

参考技术A alert(tdd.innerHTML) 看看,说不定单元里还有标签包着文字,或者还有空格

单元格属于元素节点,nodeValue 属性对于文档节点和元素节点是不可用的,返回null,
包着文字的节点应该是文本节点,
tdd.childNodes[0].childNodes ==1
tdd.childNodes[0].childNodes[0].nodeType==3 说明单元格里面只有一个文本节点,tdd.innerHTML=="男" 才可能会返回true ,当然要排除空格问题
另外,在firefox下,空的文本节点也算一个节点,如果文字包含在别的标签内,说不定还有空文本节点,tdd.childNodes[0].childNodes 就大于1了本回答被提问者采纳
参考技术B 漏了双引号,获取不到对象!var tdd = document.getElementById(”tdId“) 参考技术C 你先写一个简单的jsp文件,测试一下直接用alert能行不

页面判断显示值

<script type="text/javascript">

window.onload=function get(){
var value=document.getElementsByClassName("sd1");
for(var i=0;i<value.length;i++){

if(value[i].innerHTML==0){

value[i].innerHTML="未审核";
document.getElementsByClassName("sd1").innerHTML=value[i].innerHTML;
}
else if (value[i].innerHTML==1) {
value[i].innerHTML="审核通过";
document.getElementsByClassName("sd1").innerHTML=value[i].innerHTML;
}
else if(value[i].innerHTML==2){
value[i].innerHTML="审核中";
document.getElementsByClassName("sd1").innerHTML=value[i].innerHTML;
}
//alert(value[i].innerHTML);
}

}
</script>
<body>
<div id="sd">
<div class="sd1" >0</div>
<div class="sd1" >1</div>
<div class="sd1" >2</div>
</div>

</body>

最近再弄一个项目,里面有审核字段,,0 1 2对应三个状态,写完后台取值后,显示到前台,索性就把判断放到前台来进行了,缺点就是,页面会在onload前显示出字段,然后刷新一下,变成中文字样。

以后碰到这种问题,我想,应该会有更好的办法。

以上是关于javascript,innerHTML或者innerText获取的内容是否字符串?为啥和另外一个字符串相比结果不对的主要内容,如果未能解决你的问题,请参考以下文章

jacascript DOM节点——节点内容

Xpath 和 innerHTML

页面判断显示值

HTML DOM 属性

如何在不删除之前的 innerHTML 的情况下使用 innerHTML? [复制]

使用 .innerHTML 时 HTML 标签损坏