老师说说看获取menuItems的三种方式 为什么只有第一种可以?不是等价的吗?
老师说说看获取menuItems的三种方式 为什么只有第一种可以?this.menu和element.menu不是等价于getEle("menu_s")吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
<style type="text/css">
* {
padding: 0;
margin: 0;
font-family: Microsoft YaHei;
list-style: none;
}
body {
min-width: 1200px;
}
/* 头部样式 */
.head {
width: 100%;
height: 110px;
background-color: rgb(239, 239, 239);
border-bottom: 2px solid rgb(26, 135, 201);
}
/* 头部主体内容样式 */
.head .head_main {
width: 1200px;
margin: auto;
height: 100%;
height: 110px;
line-height: 110px;
}
/* 头部左边的小型文字样式 */
.head .head_main .x {
font-size: 12px;
color: rgb(165, 171, 165);
}
.head .head_main .x:hover {
color: orange;
}
/* 头部左边的图片和文字样式 */
.head .left img,
.head .left p {
float: left;
cursor: pointer;
}
.head .left p:hover {
color: orange;
}
.head .left img {
margin-right: 10px;
/* margin-left: 90px; */
}
.head .left p {
font-size: 20px;
}
/* 头部右边总体的样式 */
.head .right {
float: right;
list-style: none;
height: 100%;
line-height: 110px;
}
/* 头部右边的每一项的样式 */
.head .right>li {
float: left;
height: 100%;
margin-right: 30px;
font-size: 14px;
cursor: pointer;
}
.head .right li .menu {
height: 100%;
}
.head .right li a {
margin-left: 5px;
color: orange;
text-decoration: none;
}
.head .right .menu_img {
display: inline-block;
width: 25px;
height: 15px;
}
.head .right .phone {
display: inline-block;
width: 15px;
height: 30px;
margin-top: 40px;
margin-right: 10px;
float: left;
}
.head .right p {
float: left;
}
.head .right li:hover {
color: orange;
}
/* 头部右边下拉菜单项的样式 */
.menu {
width: 110px;
position: relative;
}
.menu .menu_s {
position: absolute;
z-index: 3;
top: 66px;
right: -18px;
width: 150px;
margin-bottom: 5px;
background-color: white;
border: 1px solid #FFA500;
box-sizing: border-box;
display: none;
}
/* 下拉菜单 */
.head .menu .menu_s>li {
text-indent: 2px;
height: 30px;
line-height: 30px;
width: 150px;
color: rgb(176, 177, 178);
}
.head .menu .menu_s .first {
margin-top: -24px;
}
/* 中间主体部分 */
.main {
width: 1200px;
margin: auto;
}
.main .main_center .main_center_first {
color: rgb(144, 134, 147);
}
.main .main_center .main_center_title {
font-size: 20px;
padding: 10px;
}
.main .main_center .message {
border: 1px solid rgb(251, 116, 3);
height: 500px;
/* background-color: rgb(255, 250, 232); */
}
.main .main_center .message .message_head {
width: 100%;
background-color: rgb(251, 116, 3);
height: 32px;
line-height: 32px;
color: white;
text-indent: 10px;
border-radius: 5px;
box-sizing: border-box;
}
.main .main_center .message .message_main {
margin: auto;
width: 605px;
height: 100%;
position: relative;
}
.message .message_main .item {
width: 800px;
margin-top: 18px;
position: relative;
}
.message .message_main .item span {
display: inline-block;
}
.message .message_main .item .star {
color: rgb(251, 116, 3);
}
.message .message_main .item input,
.message .message_main .item select {
width: 225px;
position: absolute;
left: 108px;
}
.message .message_main .item .item_a {
color: rgb(251, 116, 3);
position: relative;
}
.message .message_main .item .rule {
width: 440px;
display: block;
position: absolute;
z-index: 3;
left: 92px;
background-color: white;
border: 1px solid rgb(26, 135, 201);
display: none;
}
.message .message_main .item .item_a:hover .rule {
display: block;
color: black;
}
.message .message_main .item .item_ {
position: absolute;
left: 360px;
}
/* 密码强度条 */
.message .message_main .item .item_ .red,
.message .message_main .item .item_ .orange,
.message .message_main .item .item_ .green,
.message .message_main .item .item_ .gray {
margin-right: 3px;
}
.message .message_main .item .item_ .red {
width: 40px;
height: 10px;
background-color: red;
}
.message .message_main .item .item_ .orange {
width: 40px;
height: 10px;
background-color: orange;
}
.message .message_main .item .item_ .green {
margin: 0px 1px;
width: 40px;
height: 10px;
background-color: green;
}
.message .message_main .item .item_ .gray {
width: 40px;
height: 10px;
background-color: rgb(239, 239, 239);
margin: 0px 1px;
}
.message .message_main .confirm {
position: absolute;
left: 108px;
margin-top: 21px;
}
.message .message_main .confirm a {
text-decoration: none;
}
.message .message_main .submit {
width: 200px;
height: 30px;
color: white;
background-color: rgb(251, 116, 3);
font-size: 20px;
font-weight: bold;
line-height: 30px;
text-align: center;
position: absolute;
left: 140px;
top: 410px;
border-radius: 5px;
cursor: pointer;
}
.message .message_main .submit:hover {
background-color: #FFA500;
}
.footer {
margin-top: 10px;
height: 80px;
width: 100%;
background-color: rgb(239, 239, 239);
text-align: center;
color: rgb(165, 171, 165);
font-size: 14px;
border-top: 2px solid rgb(26, 135, 201);
}
.footer p {
margin-top: 19px;
}
</style>
</head>
<body>
<div class="wrap">
<!-- 头部 -->
<div class="head">
<!-- 头部主体宽度 -->
<div class="head_main">
<!-- 头部主体左部分 -->
<div class="left">
<img src="img/logo.png" alt="">
<p>慕课高铁客户服务中心 | <span class="x"> 客户服务</span></p>
</div>
<!-- 头部主体右部分 -->
<ul class="right">
<li>意见反馈<a href="javascript:void(0)" ;>imooc@com</a></li>
<li>你好,请<a href="javascript:void(0)" ;>登录</a> | 注册</li>
<li class="menu">
<p id="myMenu">我的IMOOC <img src="img/menu.png" class="menu_img"></p>
<!-- 下拉菜单内容 -->
<ul class="menu_s" id="menu_s">
<li>未完成订单</li>
<li>已经完成的订单(改/退) </li>
<li>.................................</li>
<li>我的保险</li>
<li>.................................</li>
<li>查看个人信息</li>
<li>账户安全</li>
<li>.................................</li>
<li>常用联系人</li>
<li>.................................</li>
<li>重点旅客预约</li>
<li>遗失物品查找</li>
<li>.................................</li>
<li>服务查询</li>
<li>.................................</li>
<li>投诉</li>
<li>建议</li>
</ul>
</li>
<li>
<img src="img/phone.png" class="phone">手机版
</li>
</ul>
</div>
</div>
<!-- 主体内容 -->
<div class="main">
<div class="main_center">
<p class="main_center_title">您现在的位置是:<span class="main_center_first">客运>首页</span></p>
<div class="message">
<div class="message_head">
账户信息
</div>
<div class="message_main">
<div class="item">
<span class="star">*</span>
<label>用 户 名:</label>
<input type="text" id="userName" placeholder="用户名设置成功后不可修改" />
<span class="item_"></span>
</div>
<div class="item">
<span class="star">*</span>
<label>登录密码:</label>
<input type="password" id="userPassword" placeholder="6-20位字母、数字或符号" />
<span class="item_">
</span>
</div>
<div class="item">
<span class="star">*</span>
<label>确认密码:</label>
<input type="password" id="userPassword_" placeholder="请再次输入您的登录密码" />
<span class="item_"></span>
</div>
<div class="item">
<span class="star">*</span>
<label>姓 名:</label>
<input type="text" id="IdName" placeholder="请输入姓名" />
<span class="item_">
<a href="javascript:void(0)" ; class="item_a">姓名填写规则<span class="rule">
1.确认姓名中生僻字无法输入时,可用生僻字拼音或同音字替代。
<br><br>2.输入姓名保存后,遇有系统无法正确显示的汉字,可用该汉字的拼音或同音字重新修改后保存。
<br><br>3.姓名中有繁体字无法输入时,可用简体替代。
<br><br>4.姓名较长,汉字与英文字符合计超过30个(1个汉字算2个字符)的,
需按姓名中第一个汉字或英文字符开始按顺序连续输入30个字符(空格字符不输入),
其中英文字符输入时不区别大小写</span></a>
</span>
</div>
<div class="item">
<span class="star">*</span>
<label>证件类型:</label>
<select name="zj">
<option value="二代身份证">二代身份证</option>
<option value="港澳通行证">港澳通行证</option>
<option value="台湾通行证">台湾通行证</option>
<option value="护照">护照</option>
</select>
</div>
<div class="item">
<span class="star">*</span>
<label>证件号码:</label>
<input type="text" id="IdNum" placeholder="请输入您的证件号码" />
<span class="item_"></span>
</div>
<div class="item">
<span class="star">*</span>
<label>邮 箱:</label>
<input type="email" id="email" placeholder="请正确填写邮箱地址" />
<span class="item_"></span>
</div>
<div class="item">
<span class="star">*</span>
<label>手机号码:</label>
<input type="text" id="phone" placeholder="请输入您的手机号码" />
<span class="item_"></span>
</div>
<div class="item">
<span class="star">*</span>
<label>旅客类型:</label>
<select name="zj" width="225px">
<option value="成人">成人</option>
<option value="儿童">儿童</option>
<option value=">学生">学生</option>
<option value="残疾军人">残疾军人</option>
<option value="伤残人民警察">伤残人民警察</option>
</select>
</div>
<div class="confirm">
<input type="radio" id="read" /><span>我已阅读并同意遵守</span><a href="javascript:void(0)" ;class="confirm_">《中国铁路客户服务中心网站服务条款》</a>
</div>
<div class="submit" id="submit">下一步</div>
</div>
</div>
</div>
</div>
<div class="footer">
<p>关于我们 | 网站声明</p>
<p>Copyright◎2017 imooc .com All Rights Reserved|京ICP备 13046642号-2</p>
</div>
</div>
<script type="text/javascript">
(function () {
function getEle(id) {
return document.getElementById(id);
}
var element = { //menuItems: getEle("menu_s").getElementsByTagName("li"),
myMenu: getEle("myMenu"), //获取选项:我的IMOOC
menu: getEle("menu_s"), //获取下拉菜单
menuItems: getEle("menu_s").getElementsByTagName("li"), //获取下拉菜单的每一项
menuItems: this.menu.getElementsByTagName("li"),
menuItems: element.menu.getElementsByTagName("li"),
userName: getEle("userName"), //用户名输入框
passWord: getEle("userPassword"), //输入密码文本框
passWord_: getEle("userPassword_"), //输入确认密码文本框
IdName: getEle("IdName"), //姓名
IdNum: getEle("IdNum"), //身份证号码
email: getEle("email"), //邮箱号码
Phone: getEle("phone"), //手机号码
read: getEle("read"), //是否阅读选项
submit: getEle("submit"), //提交按钮
};
})()
</script>
</body>
</html>
正在回答
同学你好,后面两种写法是错误的。
第一种,在该对象中并没有调用this,那么this指向的是全局,即window。window下没有menu这个属性,this.menu为undefined,所以this.menu.getElementsByTagName("li")是获取不到值的。可以修改为这样,并打印element对象看下:
第二种,element是整个对象,在对象里不可以直接使用。可以修改为这样,并打印element对象看下:因此menuItems: element.menu.getElementsByTagName("li")也是不成立的
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星