2017-02-20 2 views
0

Я пытаюсь заполнить массив, используя php и javascript. Onclick, я передаю переменную php в функцию addToGroup. Эта функция представляет собой функцию java-скрипта, которая добавляет переданный var в массив javascript. Когда вы посмотрели на адвоката, вы можете увидеть, как массив заполняется кликом, но когда я проверяю его, размер равен нулю. Что я делаю не так? Я приложу часть кода, в которой я это делаю. Если вам нужна дополнительная информация, я могу предоставить больше кода. Пожалуйста, дайте мне знать, если вы заметили что-то не так! Большое спасибоphp var в массив javascript

 echo "<br>"; 
     echo '<form>'; 
     echo '<input type="text" name="user" placeholder="enter name" />'; 
     echo '<button type="button" onclick="addToGroup(\'' . $groupName . '\', this.form.user.value)" />Add</button>'; 
     echo '<button type="button" onclick="removeFromGroup(\'' . $groupName . '\', this.form.user.value)" />Remove</button>'; 
     echo '</form>'; 
     echo "<br><br>"; 
    } 
    echo '<form>'; 
    echo '<button type="button" onclick="submitChanges()" />Log</button>'; 
    echo '</form>'; 

} else { 
    echo 'authentication failed.'; 
    exit; 
} 
?> 

<script> 
var groupChangesAdd = new Array(); 
var groupChangesRemove = new Array(); 

function addToGroup(groupName, user) { 
     if (groupChangesAdd[groupName] === undefined) { 
     groupChangesAdd[groupName] = user; 
     console.debug(user); 
     $('#groupChangesPlus'+groupName).html('+ ' + user + '<br>'); 
    } else { 
     groupChangesAdd[groupName] = groupChangesAdd[groupName] + ', ' + user; 
          $('#groupChangesPlus'+groupName).html($('#groupChangesPlus'+groupName).htm  l() + '+ ' + user + '<br>'); 
    } 
    console.debug(groupChangesAdd); 
} 
+1

Javascript не поддерживает ассоциативные массивы. Чтобы выполнить что-то подобное ассоциативным массивам в Javascript, вам нужно будет использовать объекты. http://www.quirksmode.org/js/associative.html –

ответ

0

Таким образом, вы используете свои массивы в качестве ассоциативных массивов (или объектов) и так «.length» не будет работать на них. Если вы хотите увидеть, если «groupChangesAdd» есть что-то в нем, вы можете зарегистрировать ее в консоль разработчика, и проверить его там, или вы можете использовать:

var groups = Object.getOwnPropertyNames(groupChangesAdd); 
console.log(groups.length - 1); 

Забавно, что «длина» не существует как свойство Object, оно всегда возвращает 0. Вот почему я удаляю 1 из group.length.

Надеюсь, это поможет!

+0

Мне удалось решить проблему, изменив: var groupChangesAdd = new Array(); для var groupChangesAdd = new Object(); Спасибо вам за помощь!!! –

Смежные вопросы