#javascript #laravel
Вопрос:
Нужно передать массив в JS
Массив получен от контроллера (коллекции). Я получаю все удостоверения личности
$top_menu->pluck('id')
// 1 part of the menu
but_g_menu. onclick = function() {
if(id_g_menu. style . display == "none") {
id_g_menu.style . display= "";
}
else { id_g_menu.style . display = "none"; }
}
// 2 part of the menu
var id_menu = new Array('1111','2222','3333');
startList = function allclose() {
for (i=0; i < id_menu.length; i ){
document.getElementById(id_menu[i]).style.display = "none";
}
}
function openMenu(id){
for (i=0; i < id_menu.length; i ){
if (id != id_menu[i]){
document.getElementById(id_menu[i]).style.display = "none";
}
}
if (document.getElementById(id).style.display == "block"){
document.getElementById(id).style.display = "none";
}else{
document.getElementById(id).style.display = "block";
}
}
window.onload=startList;
нужно передать идентификатор категории в js var id_menu = new Array(
или измените js каким-либо другим способом.
Я мало что понимаю в js.
Заранее благодарен за любую информацию!
Мне удается передать это так:
var id_menu = json_encode($top_menu->pluck('id'));
var id_menu = json_encode([1,2,3,4,16,19]);
но скрипт не работает
var id_menu = new (json_encode($top_menu->pluck('id')));
var id_menu = new (json_encode([1,2,3,4,16,19]));
это тоже не работает
Комментарии:
1.
id_g_menu.style . display = "none";
неправильный синтаксис (слишком много пробелов) — это должно бытьid_g_menu.style.display = "none";
2. это все равно не работает )) даже с пробелами, это работает так: новый массив(‘1111′,’2222′,’3333’);
Ответ №1:
Вам нужно передать массив в кодировке json в js.
var id_menu = {{json_encode($top_menu->pluck('id'))}};
Или вы можете использовать помощника по лезвию
var id_menu = @json($top_menu->pluck('id'));