慕侠0447052
2020-04-23 12:18
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<p id="intro">我的课程</p>
<ul>
<li title="JS">JavaScript</li>
<li title="JQ">JQuery</li>
<li title="">HTML/CSS</li>
<li title="JAVA">JAVA</li>
<li title="">PHP</li>
</ul>
<h1>以下为li列表title的值,当title为空时,新设置值为"WEB前端技术":</h1>
<script type="text/javascript">
var Lists=document.getElementsByTagName("li");
for (var i=0; i<Lists.length;i++)
{
var text = Lists[i].getAttribute("title");
document.write(text +"<br>");
if(text=="")
{
Lists[i].setAttribute("title","WEB前端技术")
document.write(Lists[i].getAttribute("title")+"<br>");
//document.write(text+"<br>");
}
}
</script>
</body>
</html>
看下注释代码
为什么Lists[i].getAttribute("title")不能用变量text替代
你问的应该是倒数第二个document吧 这是在if(text="")情况下执行的语句 text 已经 ="" 当然不能用了 而为什么要用Lists[i].getAttribute("title") 那是因为 前一句 Lists[i].setAttribute("title","WEB前端技术") 把它的 tittle 设置为了 "WEB前端技术" 而此时正是要输出这个新title
因为Lists[i].setAttribute("title","WEB前端技术")改变了Lists[i]中title的值,text指向的是Lists[i]中title的旧值,现在要用新值了。如果还想用text,则要在 document.write(……)前加上一句:text = Lists[i].getAttribute("title");
因为Lists[i].setAttribute("title","WEB前端技术")改变了Lists[i]中title的值,原来的text指的是Lists[i]中title的旧值。
因为Lists[i].setAttribute("title","WEB前端技术")改变了title的值,原来的text获得的是旧值,而现在必须输出新值了。
如果还想用text,则要在document.write(……)之前写一句:text=Lists[i].getAttribute("title");
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题