list_by_javascript.html 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>动态列表</title>
  6. <style>
  7. * {
  8. margin: 0;
  9. padding: 0;
  10. }
  11. body {
  12. background-color: #000;
  13. color: #fff;
  14. }
  15. #app {
  16. width: 40%;
  17. margin: 20px auto;
  18. }
  19. #fruits>li {
  20. width: 90%;
  21. height: 50px;
  22. background-color: #6ca;
  23. margin: 4px 0;
  24. text-align: center;
  25. font-size: 20px;
  26. list-style-type: none;
  27. line-height: 50px;
  28. }
  29. #fruits>li>a {
  30. float: right;
  31. color: #fff;
  32. text-decoration: none;
  33. margin-right: 10px;
  34. }
  35. #fruits+div {
  36. margin-top: 20px;
  37. }
  38. #fname {
  39. width: 70%;
  40. height: 40px;
  41. color: #fff;
  42. border-radius: 8px;
  43. border: none;
  44. outline: none;
  45. font-size: 20px;
  46. text-align: center;
  47. vertical-align: middle;
  48. background-color: #999;
  49. }
  50. #ok {
  51. width: 19%;
  52. height: 40px;
  53. color: #fff;
  54. background-color: #a45;
  55. border: none;
  56. outline: none;
  57. font-size: 16px;
  58. vertical-align: middle;
  59. }
  60. </style>
  61. </head>
  62. <body>
  63. <div id="app">
  64. <ul id="fruits">
  65. <li>苹果<a href="">×</a></li>
  66. <li>香蕉<a href="">×</a></li>
  67. <li>榴莲<a href="">×</a></li>
  68. <li>火龙果<a href="">×</a></li>
  69. </ul>
  70. <div>
  71. <input type="text" id="fname">
  72. <button id="ok">确定</button>
  73. </div>
  74. </div>
  75. <script>
  76. const ul = document.querySelector('#fruits')
  77. const fnameInput = document.querySelector('#fname')
  78. const okBtn = document.querySelector('#ok')
  79. const anchors = document.querySelectorAll('#fruits a')
  80. function removeItem(evt) {
  81. evt.preventDefault()
  82. let li = evt.target.parentNode
  83. li.parentNode.removeChild(li)
  84. }
  85. function addItem(evt) {
  86. let fname = fnameInput.value.trim()
  87. if (fname.length > 0) {
  88. let li = document.createElement('li')
  89. li.textContent = fname
  90. let a = document.createElement('a')
  91. a.setAttribute('href', '')
  92. a.textContent = '×'
  93. a.addEventListener('click', removeItem)
  94. li.appendChild(a)
  95. ul.insertBefore(li, ul.firstElementChild)
  96. }
  97. fnameInput.value = ''
  98. fnameInput.focus()
  99. }
  100. window.addEventListener('load', (evt) => {
  101. for (let i = 0; i < anchors.length; i += 1) {
  102. anchors[i].addEventListener('click', removeItem)
  103. }
  104. fnameInput.addEventListener('keydown', (evt) => {
  105. let code = evt.keyCode || evt.which
  106. if (code == 13) {
  107. addItem()
  108. }
  109. })
  110. okBtn.addEventListener('click', addItem)
  111. })
  112. </script>
  113. </body>
  114. </html>