通过javascript单击时获取列表项的内部值

通过javascript单击时获取列表项的内部值,javascript,list,innerhtml,Javascript,List,Innerhtml,我有一个用户列表,我正在从数据库中检索所有用户,并将其列在下面 <div class="online-users"> <ul id="outer-list"> @foreach($users->getUsers() as $user) {{--remove white spaces from name--}} <?php $name = str_replace(' ','-',$user-

我有一个用户列表,我正在从数据库中检索所有用户,并将其列在下面

<div class="online-users">
    <ul id="outer-list">
        @foreach($users->getUsers() as $user)
            {{--remove white spaces from name--}}
            <?php $name = str_replace(' ','-',$user->name);?>

                <li onclick="openMessageBox()" id="user" class="inner-list-item">{{$user->name}}</li><br>

        @endforeach
    </ul>
</div>

我不想每次都明确地告诉索引。有什么方法可以实现这一点吗?

您需要将当前参考作为参数传递

<input id="theId" value="test" onclick="doSomething(this)" />

// Javascript
function(elem){
    var value = elem.value;
    var id    = elem.id;
    ...
}

//Javascript
功能(elem){
var值=元素值;
变量id=元素id;
...
}

您可以将元素引用传递给函数:

<li onclick="openMessageBox(this)" id="user" class="inner-list-item">{{$user->name}}</li><br>

简单的实例:

函数openMessageBox(el){
var name=el.textContent;
警报(名称);
}
    Alice
  • Bob

您是否考虑过为此使用数据属性?例如,
不要在JavaScript问题中引用PHP代码。引用它生成的HTML。@rybo111谢谢你,这是我可能很快就会需要的。你从哪里得到输入元素的?你在回答什么问题?参考上面的例子,不难找到问题的解决方案。你只需要使用逻辑。我解决这个问题没有问题,但是从某处粘贴一个随机代码片段(甚至故意编写一个错误的示例)并不会增加太多价值。复制
user
IDs如何?在你的foreach中,你渲染li元素,每个元素都有
id=“user”
部分。id应该是唯一的,使用
class
,或者将实际用户id附加到id字符串中。如何将实际用户id附加到字符串中?这就是我如何获取用户id的方法,我仍然会选择
class=“user”
,但是如果你想附加,你可以在那里插入PHP:
id=“user”
或者只插入
id=“user”
<input id="theId" value="test" onclick="doSomething(this)" />

// Javascript
function(elem){
    var value = elem.value;
    var id    = elem.id;
    ...
}
<li onclick="openMessageBox(this)" id="user" class="inner-list-item">{{$user->name}}</li><br>
function openMessageBox(el){
    var name = el.textContent;
}