Javascript 通过数组转换在数组中按值查找键
我有一个id为“自动完成输入”的简单输入字段和一个id为“搜索按钮”的按钮。然后我使用一个带有键值对的PHP数组,这样您就可以在输入字段中键入一个值,然后找到该值的正确键值。我正在为此使用javascript,因此我还需要将PHP数组转换为javascript。请参阅下面我的代码:Javascript 通过数组转换在数组中按值查找键,javascript,Javascript,我有一个id为“自动完成输入”的简单输入字段和一个id为“搜索按钮”的按钮。然后我使用一个带有键值对的PHP数组,这样您就可以在输入字段中键入一个值,然后找到该值的正确键值。我正在为此使用javascript,因此我还需要将PHP数组转换为javascript。请参阅下面我的代码: <nav> <div class="nav-wrapper"> <div class="input-field center-align">
<nav>
<div class="nav-wrapper">
<div class="input-field center-align">
<input type="text" class="autocomplete" name="search" id="autocomplete-input" placeholder="Search.." />
<button class="icon" id="searchButton"></button>
</div>
</div>
</nav>
<?php
$testArray = array (
'yellow' => 'banana',
'red' => 'apple',
'green' => 'pear'
);
?>
$('document').ready(function(){
$('#searchButton').click(function(){
var compSearch = document.getElementById('autocomplete-input').value;
var tempArray = <?php echo json_encode($testArray); ?>;
var key = search(compSearch, tempArray);
document.getElementById("autocomplete-input").value = (key);
})
$('#searchButton').keypress(function(e){
if(e.which == 13){ //Enter key pressed
$('#searchButton').click(); //Trigger search button click event
}
});
});
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].name === nameKey) {
return myArray[i];
}
}
}
$('document').ready(函数(){
$(“#搜索按钮”)。单击(函数(){
var compSearch=document.getElementById('autocomplete-input')。值;
var tempArray=;
var key=search(compSearch,tempArray);
document.getElementById(“自动完成输入”).value=(键);
})
$(“#搜索按钮”)。按键(功能(e){
如果(e.which==13){//按下回车键
$(“#搜索按钮”)。单击();//触发搜索按钮单击事件
}
});
});
函数搜索(名称键,myArray){
对于(var i=0;i
无论输入什么,我只会在单击searchButton时返回“undefined”。我不确定这是否是“搜索”功能不能正常工作-我认为$testArray的json_编码也可能会导致问题?非常感谢您的帮助。
tempArray
将不是数组(*),而是普通对象,如下所示:
{
yellow: 'banana',
red: 'apple',
green: 'pear'
}
*只有作为索引数组的PHP数组(从索引0开始,没有间隙)才能转换为JS数组。否则,它们将转换为普通对象
所以search
应该像下面这样:
return myArray[nameKey];
。。。但是可以选择更好的变量名,因为它不是数组。
tempArray
将不是数组(*),而是普通对象,如下所示:
{
yellow: 'banana',
red: 'apple',
green: 'pear'
}
*只有作为索引数组的PHP数组(从索引0开始,没有间隙)才能转换为JS数组。否则,它们将转换为普通对象
所以search
应该像下面这样:
return myArray[nameKey];
。。。但可能选择更好的变量名,因为它不是数组。这不太可能是PHP问题,请编辑您的问题以包含页面中显示的代码。JSONed
$testArray
不是JS数组,它是JS对象,因此是。。从未输入i循环。这不太可能是PHP问题,请编辑您的问题以包含页面中显示的代码。JSONed$testArray
不是JS数组,而是JS对象,因此为。。i循环从未被输入。