Ваша проблема в том, что listbox1.selection
в строке 34
if ((app.project.item(s) instanceof CompItem) && (app.project.item(s).name.match(listbox1.selection))) {
является массивом, и вы пытаетесь сопоставить его со строкой, возвращаемой app.project.item(s).name
, которая никогда не будет соответствовать.
Кроме того, чего вы пытаетесь достичь с помощью линий
myComp = app.project.item(s);
break;
Вот функция onClick, но она работает. Он перебирает выбор и ищет соответствующий элемент проекта, основываясь на тексте списка, соответствующего имени компа. Это опасно, потому что идентичные имена компов могут создавать ложные срабатывания. Я настоятельно рекомендую вам не использовать эту технику в производственном коде, потому что она определенно вызовет проблемы у ваших пользователей.
Также я бы превратил часть, где вы заполняете список, в отдельную функцию, и вызову ее после нажатия кнопки «Удалить», чтобы обновить список, поскольку в данный момент список остается неизменным даже после удаления композиции.
button2.onClick = function deletecomps() {
for (var b= 0; b < listbox1.selection.length; b++){
for (var s = 1; s <= app.project.numItems; s ++) {
if ((app.project.item(s) instanceof CompItem) && (app.project.item(s).name.match(listbox1.selection[b].text))) {
app.project.item(s).remove ();
}
}
}
}