【问题标题】:cannot read property 'value' of null in javascript无法在 javascript 中读取 null 的属性“值”
【发布时间】:2019-09-17 17:22:29
【问题描述】:

我遇到了 javascript 的问题。

我的html页面函数

function getAssignUnit(phaseId)
{
    var projectId = document.getElementById("projectId").value;
    //var phaseid = document.getElementById("phaseid").value;
    var strURL="index.php?do=/accesscontrol/assignUnitDetails/projectid_"+projectId+"/phaseid_"+phaseId;
    var xmlhttp;

    if(window.XMLHttpRequest)
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
      if(xmlhttp.readyState==4 && xmlhttp.status==200)
      {
        if(xmlhttp.responseText == '')
        {
            document.getElementById('assigncUnit').style.display = 'none';          
        }
        else
        {
            document.getElementById('assignUnitNN').style.display = 'none';
            document.getElementById('assigncUnit').style.display='block';
            document.getElementById("assigncUnit").innerHTML=xmlhttp.responseText;                  
        }
      }
    }
    xmlhttp.open("GET", strURL, true);
    xmlhttp.send();
}

我在这一行遇到错误

document.getElementById('assignUnitNN').style.display = 'none'; (未捕获的类型错误:无法读取 null 的属性“样式” 在 XMLHttpRequest.xmlhttp.onreadystatechange )

assignUnitDetails 类文件

<?php
defined('PHPFOX') or exit('NO DICE!');

class Accesscontrol_Component_Controller_assignUnitDetails extends Phpfox_Component
{
    public function process()
    {
        $projectId = $this->request()->get('projectid');
        $phaseId = $this->request()->get('phaseid');
        $category = ''; 
        if($projectId != '')
        {   
            $aUnitDetailss = Phpfox::getService('accesscontrol.process')->getAssignUnitDetails($projectId, $phaseId);

            $category .= '<select name="val[unitId]" id="unitId" style="width:100%;" onchange="javascript:getAssignnoti(this.value);"><option value="">--Select Phase--</option>'; // 
            for($i=0; $i < count($aUnitDetailss); $i++)
            {
                $category .= '<option value="'.$aUnitDetailss[$i]["unit_id"].'">'.$aUnitDetailss[$i]["unit_name"].'</option>';
            }

            $category .= '</select>';

            echo $category;
            die;
        }
        else
        {
            $category = '';
            echo $category;
            die;
        }
    }

    public function clean()
    {
        (($sPlugin = Phpfox_Plugin::get('accesscontrol.component_controller_phaselist_clean')) ? eval($sPlugin) : false);
    }

}

我的查询在这里

//Get assign Phase
    public function getAssignUnitDetails($projectId, $phaseId)
    {
        $where = 'a.projectId = "'.$projectId.'" AND a.phaseId = "'.$phaseId.'" AND a.status = 1';
        $aUnitDetailss = $this->database()->select('DISTINCT a.phaseId,ph.phaseId, ph.phaseName')
                        ->from(Phpfox::getT('hse_notification_role'), 'a')
                        //->leftjoin(Phpfox::getT('user'), 'u', 'u.user_id = a.userId')
                        ->leftjoin(Phpfox::getT('project'), 'p', 'p.projectId = a.projectId')
                        ->leftjoin(Phpfox::getT('wbs_phase'), 'ph', 'ph.phaseId = a.phaseId AND ph.projectId = a.projectId')
                        ->leftjoin(Phpfox::getT('unit'), 'un', 'un.projectId = a.projectId AND un.phaseId = a.phaseId AND un.unit_id = a.unitId')
                        ->where($where)
                        ->execute('getRows'); // getRows
                                 // echo $aUnitDetailss; die;
        return $aUnitDetailss;
    }

这是我的展示

<div class="col-lg-4">
                                <div>{required}Unit:<br/>                           
                                <div id="assignUnitNN ">
                                <select name="" id="" style="width:100%;" >
                                <option value="">--Select Unit--</option>                                       
                                </select>
                                </div>
                                <div id="assigncUnit" style="float:left; display:none; width:100%;"></div>
                                <div class="clear"></div>
                                </div>
                                </div>

【问题讨论】:

  • 代码中的assignUnitNN是什么?
  • 代码中没有带有id = 'assignUnitNN'的元素
  • {required}单位:
  • 您的 id 中有一个额外的空间。assignUnitNN 。可能是这个问题'
  • 从 id 名称中删除空格

标签: javascript php


【解决方案1】:

您的 id 中有一个额外的空间。这就是你的问题。我刚刚删除了空间并为您准备了这个示例 sn-p。

document.getElementById("assignUnitNN").style.display = "none"
<div class="col-lg-4">
  <div>{required}Unit:<br/>                           
    <div id="assignUnitNN">
    <select name="" id="" style="width:100%;" >
      <option value="">--Select Unit--</option>                         </select>
  </div>
  <div id="assigncUnit" style="float:left; display:none; width:100%;"></div>
  <div class="clear"></div>
</div>

【讨论】:

  • 我删除了空格,但我的问题仍然没有解决。
猜你喜欢
  • 1970-01-01
  • 2013-07-19
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多