Uncaught SyntaxError: missing ) after argument list - в чём может быть проблема? Как искать причину?

При запуске функции через onclick=""

В консоли выходит ошибка "SyntaxError: missing ) after argument list". Ссылка в консоли на первую строку документа. Я точно знаю, что шибка возникает из за запуска этой функции. Ниже привожу, как это выглядит.

Кусок элемента с запуском функции startWf()

'<a class="dropdown-item" onclick="startWf(' + CompanyId + ',' + tplId + ',' + ValIdCompany + ',' + ValIdList + ',' + ValIdListElement + ',' + Object.values(listTech[i][nameObjModel])[0] + ',' + Object.values(listTech[i][nameObjVin])[0] + ',' + Object.values(listTech[i][nameObjModelDvig])[0] + ',' + Object.values(listTech[i][nameObjModelSnDvig])[0] + ',' + Object.values(listTech[i][nameObjModelGod])[0] + ',' + Object.values(listTech[i][nameObjModelNarab])[0] + ');">Сервис</a>';

Сама функция startWf()

function startWf(comId, tplsId, IdLists, IdListElements, PrmObjModel, prmObjVin, PrmObjModelDvig, PrmObjModelSnDvig, PrmObjModelGod, PrmObjModelNarab) {
    if (!comId) {
        alert('Нет id компании');
        return;
    }

    var params = {
        TEMPLATE_ID: tplsId,
        DOCUMENT_ID: ['crm', 'CCrmDocumentCompany', comId],
        PARAMETERS: {
            'IdCompany': comId,
            'IdList': IdLists,
            'IdListElement': IdListElements,
            'ValObjModel': PrmObjModel,
            'ValObjVin': prmObjVin,
            'ValObjModelDvig': PrmObjModelDvig,
            'ValObjModelSnDvig': PrmObjModelSnDvig,
            'ValObjModelGod': PrmObjModelGod,
            'ValObjModelNarab': PrmObjModelNarab,
        },
    };

    BX24.callMethod(
        'bizproc.workflow.start',
        params,
        function (result) {
            if (result.error())
                alert("Error: " + result.error());
            else
                alert("Success: " + result.data());
        }
    );
}

Вот так выглядит сформированный HTML-кусок.

<a class="dropdown-item" onclick="startWf(16132, 358, 116, 50736, Оборудованиt ODYN, VIN-123451234, DVIG-PODVIG-435, CY-1232323, 1996, 12345);">Сервис</a>

Рядом есть аналогичная функция с 2-мя параметрами, всё работает. Проблем нет.

'<a href="#" onclick="deleteElemList(' + listTech[i].IBLOCK_ID + ', ' + listTech[i].ID + ');" class=""></a>'

Функция deleteElemList()

function deleteElemList(blockId, elementId) {

    var params = {
        'IBLOCK_TYPE_ID': 'lists',
        'IBLOCK_ID': blockId,
        'ELEMENT_ID': elementId
    };
    BX24.callMethod(
        'lists.element.delete',
        params,
        function (result) {
            if (result.error())
                alert("Error: " + result.error());
            else
                alert("Success: " + result.data());
        }
    );

}

Вот сформированный кусок HTML. Не вижу разницы, но запуск первой функции выдает ошибку.

<a href="#" onclick="deleteElemList(116, 50736);" class=""></a>

Ответы (2 шт):

Автор решения: Headak

попробуй в функции startWf() закрывать и открывать однотипными скобками (или ' или ", не совмещая)

вот так например

<a class="dropdown-item" onclick="startWf(" + CompanyId + ',' + tplId + ',' + ValIdCompany + ',' + ValIdList + ',' + ValIdListElement + ',' + Object.values(listTech[i][nameObjModel])[0] + ',' + Object.values(listTech[i][nameObjVin])[0] + ',' + Object.values(listTech[i][nameObjModelDvig])[0] + ',' + Object.values(listTech[i][nameObjModelSnDvig])[0] + ',' + Object.values(listTech[i][nameObjModelGod])[0] + ',' + Object.values(listTech[i][nameObjModelNarab])[0] + ");">Сервис</a>```
→ Ссылка
Автор решения: HTO HOT

По вашим словам Js Генерирует вот такой код HTML

<a class="dropdown-item" onclick="startWf(16132, 358, 116, 50736, Оборудованиt ODYN, VIN-123451234, DVIG-PODVIG-435, CY-1232323, 1996, 12345);">Сервис</a>

А этот HTML при клике выполняет следующий код JS

startWf(16132, 358, 116, 50736, Оборудованиt ODYN, VIN-123451234, DVIG-PODVIG-435, CY-1232323, 1996, 12345);

Как вы видите кавычек (которые должны преобразовывать элементы в строку) нет. В этом и ошибка, если вы замените все аргументы функции, на числа вы не получите эту ошибку.

Я вам советую вместо onclick="" использовать полноценный метод в js element.addEveintListener();

→ Ссылка