var popname=document.getElementById("Mname");   
    function poplayer(obj)
       {
         if(trim(obj.value)=='')
         {
           popname.style.visibility='visible';      
         }
       }
       function offlayer(obj)
       {
         popname.style.visibility='hidden';
       }
       function trim(str) 
       { //删除左右两端的空格
        return str.replace(/(^\s*)|(\s*$)/g, "");
       }   <div id="Mname">
                                                主题应尽量简洁明了
                                            </div>
 #Mname
        {
            background: url(    'img/tishi.gif' );
            width: 240px;
            height: 37px;
            line-height: 37px;
            font-size: 13px;
            color: #4A4A4A;
            visibility:hidden;
        }
为什么这样用全局变量不行,
但是
  function poplayer(obj)
       {
         if(trim(obj.value)=='')
         {
           document.getElementById("Mname").style.visibility='visible';
         }
       }
       function offlayer(obj)
       {
         document.getElementById("Mname").style.visibility='hidden';
       }
       function trim(str) 
       { //删除左右两端的空格
        return str.replace(/(^\s*)|(\s*$)/g, "");
       }
这样就可以了

解决方案 »

  1.   

    把全局的改成这样试试
    var popname=function(){return document.getElementById("Mname");}
      

  2.   

    加个这样的试试<script type="text/javascript" defer>
    或者把JS代码放到最后
      

  3.   

    把  <div id="Mname"> 放在前面,<script></script>放到后面<div id="Mname"> 
    <script>
    var popname=document.getElementById("Mname");
    function xxx()
    {}
    ......
    </script>
      

  4.   

    把 <div id="Mname"> 放在前面,<script></script>放到后面
    为什么这样就可以?
      

  5.   

    大多数情况下,html代码以及javascript代码是从上到下顺序执行的.你的js代码中
    var popname=document.getElementById("Mname");而这个时候,mname对象还不存在,还没加载. 那么得到的popname当然就是一个null对象.