我们10年前的软件曾经用PHP编写,并结合了HTML和SQL代码段。我被迫充分利用它。
根本没有使用JavaScript的经验,我必须使用jQuery' inArray
来按值获取索引。
尽管一切似乎都是正确的,但inArray
始终返回-1
,尽管我应该得到正确的索引。那我做错了什么?
$html1 .= "<script src='/js/jquery-3.2.1.min.js'> </script>
<script> var juseridarray = ".json_encode($useridarray).";
$(document).ready(function()
{
$('#chiefname').change(UpdateInfo);
$('#chiefid').change(UpdateInfo);
$('#chiefs').change(UpdateInfo);
});
function UpdateInfo()
{
var chiefname = $('#chiefname').val();
var chiefid = $.inArray( chiefname, juseridarray);
var chief = chiefid;
$('#chief').val(chief);
console.log(juseridarray);
console.log(chiefname);
}
</script>";
对不起,我忘了提日志输出。所以这是我从firebug复制的juseridarray日志输出片段:
对象[430]
1:&#34;管理员&#34;
3:&#34; Bob&#34;
8:&#34; Wegner,Meike&# 34;
10: &#34; Uhrenbauer,Sonja&#34;
[426更多...]
数组似乎有正确的索引和正确的值。因此,当我搜索Bob&#39;时,inArray返回-1,尽管&#39; Bob&#39;预计将返回3。 另一方面,我得到了Bob&#39;使用时的回报
console.log(juseridarray[3]);
数组内容是静态的。它在运行时没有变化。如果愿意,用户名将始终保持其ID(存储为索引)
答案 0 :(得分:1)
首先,它不是你正在操作的数组,它是一个对象。
你不能像你想要的那样使用对象的inArray。 但是,下面的代码应返回具有给定用户名的用户的id(如果存在)。
function findUserIdByUsername(user, userArray){
var user_id = false;
$.each(userArray, function(id, username){
if( user == username ) user_id = id
});
return user_id;
}
var chiedif = findUserIdByUsername('bob', juseridarray);