以下是描述错误的图片: []
这是有问题的代码
Function GetAllNodes() As Collection
Dim theNodes As New Collection
Set xmlDoc = New DOMDocument60
If Not xmlDoc.LoadXML(indata) Then
Err.Raise xmlDoc.parseError.ErrorCode, , xmlDoc.parseError.reason
End If
Set List = xmlDoc.SelectNodes("//Response/FileContents/Collections/Validation/Audit")
For Each Node In List
Set attr = Node.Attributes.getNamedItem("Node")
If (Not attr Is Nothing) Then
Debug.Print attr.BaseName & " " & attr.Text
End If
If (Node.HasChildNodes) Then
For Each childNode In Node.ChildNodes
Debug.Print childNode.BaseName & " " & childNode.Text
'*
'* Add node and content to collection
'*
theNodes.Add childNode.BaseName & " " & childNode.Text
Next childNode
End If
Next Node
Set GetAllNodes = theNodes
End Function
答案 0 :(得分:0)
这些“错误”表示您的 ct 和 dtr 没有向他们声明任何变量,这意味着您正在调用那些没有它们实际存储在某处的人
- 如何解决这个问题 -
在if -else之外声明你的ct和dtr变量。 如果这个循环没有启动,那么变量也不会被重新计算。
- 快速修复 -
声明
$ct = "";
并且
$dtr = "";
在if循环之前,所以它们总是有一个值。
我希望这对你有所帮助。
答案 1 :(得分:0)
以下是应的修改后的代码。但是,您可能需要完全声明循环外的第一个变量,具体取决于先前值是否具有任何重要性。
我清理了一下,更改了引号以正确引用HTML输出,依此类推。
<?php
foreach($LOCKPERIOD as $lp)
$ct = '';
$dtr = '';
$da = '';
$gp = '';
$d = '';
if($lpb->pay_code == $lp->pay_code){
$ct = $lp->create_transaction;
$dtr = $lp->d_t_r;
$da = $lp->deduct_add_adjustment;
$gp = $lp->generate_payslip;
$d = $lp->date;
$q = $this->payroll_lock_period_model->getLockPeriod($lpb->pay_code,$lp->pay_code);
if(!empty($q)){
$ct = $lp->create_transaction;
$dtr = $lp->d_t_r;
$da = $lp->deduct_add_adjustment;
$gp = $lp->generate_payslip;
$d = $lp->date;
}
$ct = ($ct == 1) ? 'checked' : '';
$dtr = ($dtr == 1) ? 'checked' : '';
$da = ($da == 1) ? 'checked' : '';
$gp = ($gp == 1) ? 'checked' : '';
echo '<td align="center"><input type="checkbox" '.$ct.' disabled/></td>
<td align="center"><input type="checkbox" '.$dtr.' disabled/></td>
<td align="center"><input type="checkbox" '.$da.' disabled/></td>
<td align="center"><input type="checkbox" '.$gp.' disabled/></td>
<td align="center">'.$d.'</td>';
?>