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 шт):
попробуй в функции 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>```
По вашим словам 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();