Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环内的javascript函数不工作_Javascript_Php_Codeigniter - Fatal编程技术网

循环内的javascript函数不工作

循环内的javascript函数不工作,javascript,php,codeigniter,Javascript,Php,Codeigniter,我正在显示在线用户。当我单击某个用户时,相应的用户应显示在下面的文本框中。我使用javascript来实现这一点,但它只需要第一个用户。单击第二个用户时,第一个用户显示在下面的文本框中。为什么只使用第一个数组 <?php foreach($query as $row) { ?> <input type="text" name="user" id="user" value="<?php echo $row->users;?>

我正在显示在线用户。当我单击某个用户时,相应的用户应显示在下面的文本框中。我使用javascript来实现这一点,但它只需要第一个用户。单击第二个用户时,第一个用户显示在下面的文本框中。为什么只使用第一个数组

<?php
    foreach($query as $row)
    {
    ?>
        <input type="text" name="user" id="user" value="<?php echo $row->users;?> onclick="select_online()">
<?php
    }
    ?>
    <script>

    function select_online()
    {
        var user=document.getElementById("user").value;
        document.getElementById("usersonline").value=user;
    }
    </script>


Name:<input type="text" name="usersonline" id="usersonline">


您应该为输入指定一个唯一的名称。不能多次重用id=“user”,否则javascript将无法找到每个输入元素

以下情况会更好:

<?php
    $id = 0;
    foreach($query as $row) {
        $id += 1;
?>
<input type="text" name="user" id="user-<?php echo "$i"; ?>" value="<?php echo $row->users;?> onclick="select_online(<?php echo "$i"; ?>)">
<?php
    }
?>

<script>
    // Move script outside loop
    function select_online(i) {
        var user = document.getElementById("user-" + i).value;
        document.getElementById("usersonline").value = user;
    }
</script>

Name:<input type="text" name="usersonline"id="usersonline">


您应该为输入指定一个唯一的名称。不能多次重用id=“user”,否则javascript将无法找到每个输入元素

以下情况会更好:

<?php
    $id = 0;
    foreach($query as $row) {
        $id += 1;
?>
<input type="text" name="user" id="user-<?php echo "$i"; ?>" value="<?php echo $row->users;?> onclick="select_online(<?php echo "$i"; ?>)">
<?php
    }
?>

<script>
    // Move script outside loop
    function select_online(i) {
        var user = document.getElementById("user-" + i).value;
        document.getElementById("usersonline").value = user;
    }
</script>

Name:<input type="text" name="usersonline"id="usersonline">


首先,对许多元素使用相同的id是一个错误。您应该为生成的输入设置不同的
id
属性

其次,您应该使用
this
获取当前元素的值:

function select_online()
{
    var user=this.value;
    document.getElementById("usersonline").value=user;
}

document.getElementById(“用户”)
语句将始终选择
id
属性等于“用户”的元素,并且该元素将始终相同。很可能,这不是你想要的。如果我理解正确,您希望获得单击元素的
,因此正如我前面提到的,您可以使用
这个
表达式来实现它,该表达式指向当前单击的元素

首先,对许多元素使用相同的id是一个错误。您应该为生成的输入设置不同的
id
属性

其次,您应该使用
this
获取当前元素的值:

function select_online()
{
    var user=this.value;
    document.getElementById("usersonline").value=user;
}

document.getElementById(“用户”)
语句将始终选择
id
属性等于“用户”的元素,并且该元素将始终相同。很可能,这不是你想要的。如果我理解正确,您希望获得单击元素的
,因此正如我前面提到的,您可以使用
这个
表达式来实现它,该表达式指向当前单击的元素

根据HTML标准,文档中应该有唯一的id。但是在您的例子中,您正在生成多个id=user的输入标记。Javascript的
文档.getElementById
只能获取id=user
的元素

为此,您可以按如下方式更改代码:

<?php foreach($query as $row) {  ?>
    <input type="text"   name="user"  id="user"   value="<?php echo $row->users;?>" onclick="select_online(this)">
<?php } ?>
<script> 
function select_online(elm) {
    var user=elm.value;
    document.getElementById("usersonline").value=user;
}
</script>
Name:<input type="text" name="usersonline"id="usersonline">


根据HTML标准,文档中应该有唯一的id。但是在您的例子中,您正在生成多个id=user的输入标记。Javascript的
文档.getElementById
只能获取id=user
的元素

为此,您可以按如下方式更改代码:

<?php foreach($query as $row) {  ?>
    <input type="text"   name="user"  id="user"   value="<?php echo $row->users;?>" onclick="select_online(this)">
<?php } ?>
<script> 
function select_online(elm) {
    var user=elm.value;
    document.getElementById("usersonline").value=user;
}
</script>
Name:<input type="text" name="usersonline"id="usersonline">


您在html上看到
foreach
结果了吗?您在html上看到
foreach
结果了吗?
select_online()
没有在循环中定义,在@manju提供的代码中。在
标记前面有一个括号(
)用来关闭循环。@LazarevAlexandr:我知道。我已经抓到了。我看到您进行了编辑,导致了冲突。我以前没有这样做过,我也无法解决它,但我认为这和我做的编辑是一样的。顺便说一句,你的解决方案比我的好。坚持住:)我把我的留在那里,因为它演示了如何使id字段唯一。哦,我投你一票<在@manju提供的代码中,循环中未定义code>select_online()
。在
标记前面有一个括号(
)用来关闭循环。@LazarevAlexandr:我知道。我已经抓到了。我看到您进行了编辑,导致了冲突。我以前没有这样做过,我也无法解决它,但我认为这和我做的编辑是一样的。顺便说一句,你的解决方案比我的好。坚持住:)我把我的留在那里,因为它演示了如何使id字段唯一。哦,我投你一票!