老师求您帮忙解决一个关于js的问题

来源:3-3 正则扩展

目訫

2019-05-30

<!DOCTYPE html>
<html lang="en">
<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>text</title>
</head>
<body>
  <div>
    <input id="text" type="text" />
    <ul style="display: none;">
      <li>编号0001</li>
    </ul>
  </div>
  <script>
    let text = document.getElementById('text'); // 获取文本框
    let oul = document.getElementsByTagName('ul')[0]; // 获取ul标签
    let oli = oul.getElementsByTagName('li'); // 获取li标签
    // 文本框获得焦点的时候ul列表显示
    text.onfocus = function() {
      oul.style.display = 'block';
    }
    // 文本框失去焦点的时候ul列表隐藏
    text.onblur = function() {
      oul.style.display = 'none';
    }
    // 现在我用的方法是setTimeout
    // text.onblur = function() {
    //   setTimeout(() => {
    //     console.log(1)
    //     oul.style.display = 'none';
    //   }, 100)
    // }
    // 为每一个li标签添加点击事件:将li标签里面的内容存储在文本框里
    for (let i = 0; i < oli.length; i++) {
      oli[i].onclick = function() {
        text.value = this.innerHTML;
      }
    }
  </script>
</body>
</html>

现在出现的问题是不让用定时器解决这个问题,老师有没有什么好的办法,谢谢老师,万分感谢。

写回答

3回答

快乐动起来呀

2019-05-30

我没看明白你要干什么呢?

0
3
目訫
回复
快乐动起来呀
涨知识,以前没听说过,这个事件可以选上值?
2019-06-02
共3条回复

目訫

提问者

2019-06-02

<!DOCTYPE html>
<html lang="en">
<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>text</title>
</head>
<body>
<div tabindex="1">
<input id="text" type="text" />
<ul style="display: none;">
<li>编号0001</li>
</ul>
</div>
<script>
let text = document.getElementById('text'); // 获取文本框
let oul = document.getElementsByTagName('ul')[0]; // 获取ul标签
let oli = oul.getElementsByTagName('li'); // 获取li标签
// 文本框获得焦点的时候ul列表显示
text.addEventListener("focusin", () => {
oul.style.display = 'block';
})
// 文本框失去焦点的时候ul列表隐藏
text.addEventListener("focusout", () => {
oul.style.display = 'none';
})
// 现在我用的方法是setTimeout
// text.onblur = function() {
//   setTimeout(() => {
//     console.log(1)
//     oul.style.display = 'none';
//   }, 100)
// }
// 为每一个li标签添加点击事件:将li标签里面的内容存储在文本框里
for (let i = 0; i < oli.length; i++) {
oli[i].onclick = function() {
text.value = this.innerHTML;
}
}
</script>
</body>
</html>

还是不好用啊,老师

0
0

目訫

提问者

2019-06-02

可能我表述不清楚,老师您可以运行以下这段代码,您就知道了。麻烦了。

0
0

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程