【问题标题】:Two loops mixed up两个循环混在一起
【发布时间】:2011-10-28 20:15:42
【问题描述】:

我有这段代码,我删除了一些与我的问题无关的代码。

while ($row_pl = mysql_fetch_array($res_pl))
{
    // Uurtarief
    $sql_uur = "SELECT
                aantal_kop,
                tarief_min,
                tarief_max,
                tijd_min,
                tijd_max,
                tijd_extra
                FROM uurtarief
                WHERE machine = '".$row_pl['machine']."'
                ORDER BY aantal_kop ASC";

    if(!$res_uur = mysql_query($sql_uur))
    {
        include('includes/errors/database_error.php');
    }
    else
    {
        while ($row_uur = mysql_fetch_array($res_uur))
        {
            ?>
                <input type="text" name="tar_kop[]" size="8" value="<?php echo $row_uur['aantal_kop']; ?>" />
                <input type="text" name="tar_tarief[]" size="8" value="<?php echo $uurtarief; ?>" />
                <input type="text" name="tar_tijd_extra[]" size="8" value="<?php echo $row_uur['tijd_extra']; ?>" />
                <br />
            <?php
        }
    }

    ?>
<tr>
    <td>
        <input type="text" name="pl_aantal_kop[]" size="3" onChange="uur_tarief(this, <?php echo $i ?>)" value="" />
    </td>
    <td>
        <input type="text" name="pl_tarief_ph[]" size="4" value="" />
    </td>
    </tr>
<?php
}

使用javascript,我试图在pl_aantal_kop[] 中找到值并将相应的参数发送到pl_tarief_ph[]

function uur_tarief(selectVeld, nr)
{
    if(document.getElementsByName('pl_aantal_kop[]')[nr].value == 1)
    {
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[0].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[0].value;
    }

    if(document.getElementsByName('pl_aantal_kop[]')[nr].value == 2)
    {
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[1].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[1].value;
    }

    if(document.getElementsByName('pl_aantal_kop[]')[nr].value == 3)
    {
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[2].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[2].value;
    }

    if(document.getElementsByName('pl_aantal_kop[]')[nr].value == 4)
    {
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[3].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[3].value;
    }

    if(document.getElementsByName('pl_aantal_kop[]')[nr].value == 5)
    {
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[4].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[4].value;
    }

    if(document.getElementsByName('pl_aantal_kop[]')[nr].value == 6)
    {
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[5].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[5].value;
    }
}

出现的问题是 javascript 一直在 while ($row_uur = mysql_fetch_array($res_uur)) 循环的第一行而不是属于第一个循环的字段开始计数。下面是这个循环的截图。

有什么建议吗?

【问题讨论】:

    标签: php javascript html forms loops


    【解决方案1】:

    你可以把你的 JS 压缩成这样:

    function uur_tarief(selectVeld, nr)
    {
        var index = document.getElementsByName('pl_aantal_kop[]')[nr].value;
    
        document.getElementsByName('pl_tarief_ph[]')[nr].value = document.getElementsByName('tar_tarief[]')[index - 1].value;
        document.getElementsByName('pl_snijtijd_extra[]')[nr].value = document.getElementsByName('tar_tijd_extra[]')[index - 1].value;
    }
    

    你可以试试这个代码并回帖吗?您在哪里初始化和调用 JavaScript 代码?您发布的代码看起来不错(尽管臃肿严重),所以它可能是其他地方的问题。

    【讨论】:

    • value == 1、value == 2 等语句呢?它们是代码的一部分。它们是可以从图片中发布的列中选择的数字。
    • 你的值总是比索引号大一,因此是[index - 1]
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2013-03-31
    • 1970-01-01
    • 2019-03-08
    • 2013-03-22
    • 2020-10-17
    • 1970-01-01
    • 2016-04-01
    相关资源
    最近更新 更多