Javascript: Массив undefined не является объектом - PullRequest
0 голосов
/ 25 августа 2018

Извините, если этот вопрос уже задавался.Я нашел неопределенные ошибки, но не для массива, поэтому вот мой вопрос:

Я получаю ошибку «неопределенный не объект», когда я пытаюсь объявить selRef41 с данным массивом.(Между прочим, я использую ESTK, и я пишу этот скрипт для Photoshop)

var docRef = app.activeDocument;
var layRef = docRef.activeLayer;

function createSelection(layRef) {
// Declare function variables
const oneT = 1/3;
const twoT = (1/3)*2;

docRef = app.activeDocument;
layRef = app.activeLayer;

if (detailFactor == "2x2") {
    var selRef41 = Array(Array(0, 0),
                        Array(layRef.width.value / 2, 0),
                        Array(layRef.width.value / 2, layRef.height.value / 2),
                        Array(0, layRef.height.value / 2));
}

Соответствующий main - всего лишь одна строка для вызова функции:

function main() {
createSelection(layRef);
}

1 Ответ

0 голосов
/ 27 августа 2018

Где вы нашли это layRef.width.value? Слои не имеют свойства width или height (только документы), это то, что вызывает ошибку в вашем коде. Вы можете рассчитать ширину и высоту, используя их bounds:

var layRef = docRef.activeLayer;
refWidth = layRef.bounds[2] - layRef.bounds[0];
refheight = layRef.bounds[3] - layRef.bounds[1];
alert([refWidth,refheight]);

Вы можете проверить Справочник сценариев Photoshop pdf , чтобы проверить свойства и методы объектов DOM.

Кроме того, как отметил cybernetic.nomad, это не сработает: layRef = app.activeLayer;, и, кроме того, у вас есть if (detailFactor == "2x2"), но detailFactor не назначен.

...