我猜你<script>在<head>. 这通常会失败,因为 DOM 没有完全加载。
<html>
 <head>
  <script>
  function show(){....}
  show(); // don't do this 
  </script>
 </head>
 <body>
  <p>Blackberry</p>
  <p>Strawberry</p>
  <p>Raspberry</p>
 </body>
</html>
最好使用window.onload = show;or window.addEventListener('load',show);。
但是,x[i]是一个局部变量。它在节目之外不为人所知,甚至在您的匿名功能中也不为人所知。所以你必须创建一个闭包或使用this.innerHTML.
所以要么使用
function show(){
   var el = document.getElementsByTagName('p');
   for(var i = 0; i < el.lenght; ++i){
       el[i].onclick = function(e){
           alert(this.innerHTML);
       }
   }
}
window.onload = show;
或者
function show(){
   var el = document.getElementsByTagName('p');
   for(var i = 0; i < el.lenght; ++i){
       el[i].onclick = (function(element){
           return function(e){
               alert(element.innerHTML);
           };
       })(el[i]);
   }
}
window.onload = show;
也可以看看: