#javascript
#javascript
Вопрос:
Я получаю это сообщение «Неперехваченная ошибка типа: не удается прочитать свойство ‘split’ из null» для этого linesplitted = elements[i].nextSibling.nodeValue.split("||");
Код приведен ниже. Я буду признателен за ваш вклад в решение этой проблемы. Код работал раньше. Я думаю, что это что-то о новом php или jquery…
$('#r_NEStd').hide(); // Das Feld ist am Anfang versteckt und duch klicken
auf NE wird wieder gezeigt.
$("input[name='x_Posten[]'], input[name='x_NE[]']").click(function() { //
Field2 has multiple inputs(checkboxes) so they should be selected by name
document.getElementById("x_Total").readOnly = true;
document.getElementById("x_Auslagen").readOnly = true;
document.getElementById("x_RBetrag").readOnly = true;
if ($("input[name='x_Posten[]']:checked").val() amp;amp;
$("input[name='x_NE[]']:checked").val()) { // WENN NichtErhaeltlichkeit und
Posten geklickt sind
document.finvoicesadd.x_Total.value = '';
var Anzahl = 0;
var Auslagen = 0;
var AuslagenMwSt = 0;
var Total = 0;
var splitted;
var nestdsatz = document.finvoicesadd.x_NEStd.value;
var e = document.getElementById("x_Vorschuss");
var VorschussValue = e.options[e.selectedIndex].value;
var nestdsatz = document.finvoicesadd.x_NEStd.value;
var elements = document.getElementsByName("x_Posten[]");
for (i = 0; i < elements.length; i ) {
if (elements[i].checked) {
splitted = elements[i].nextSibling.nodeValue.split("||");
Auslagen = Auslagen parseFloat(splitted[4]);
AuslagenMwSt = AuslagenMwSt (parseFloat(splitted[4]) *
(1 parseFloat(splitted[5])));
Anzahl = Anzahl parseFloat(splitted[2]);
Total = Total (parseFloat(splitted[2] * nestdsatz) *
(1 parseFloat(splitted[5])));
}
}
document.finvoicesadd.x_Auslagen.value = Auslagen.toFixed(2);
document.finvoicesadd.x_Total.value = (Total AuslagenMwSt).toFixed(2);
document.finvoicesadd.x_RBetrag.value = (Math.round(((Total
AuslagenMwSt) - VorschussValue) * 20, 0) / 20).toFixed(2);
document.finvoicesadd.x_Vorlage.value = "rechnungne";
} else { // WENN x_Posten oder NE nicht oder nur ein Feld gelickt ist
document.finvoicesadd.x_Total.value = '';
var Anzahl = 0;
var Auslagen = 0;
var Total = 0;
var splitted;
var e = document.getElementById("x_Vorschuss");
var VorschussValue = e.options[e.selectedIndex].value;
var nestdsatz = document.finvoicesadd.x_NEStd.value;
var elements = document.getElementsByName("x_Posten[]");
for (i = 0; i < elements.length; i ) {
if (elements[i].checked) {
splitted = elements[i].nextSibling.nodeValue.split("||");
// Auslagen = Auslagen (parseFloat(splitted[4])*
(1 parseFloat(splitted[5])));
Auslagen = Auslagen parseFloat(splitted[4]);
Anzahl = Anzahl parseFloat(splitted[3]);
Total = Total parseFloat(splitted[6]);
}
}
document.finvoicesadd.x_Auslagen.value = Auslagen.toFixed(2);
document.finvoicesadd.x_Total.value = (Total).toFixed(2);
document.finvoicesadd.x_RBetrag.value = (Math.round(((Total) -
VorschussValue) * 20, 0) / 20).toFixed(2);
document.finvoicesadd.x_Vorlage.value = "rechnung";
}
});
Комментарии:
1. Вы знаете, что означает ошибка?
2. зарегистрируйте свое значение nodeValue, чтобы проверить, имеет ли оно значение или нет, или оно не определено.
Ответ №1:
Замените это:
if (elements[i].checked) {
с помощью этого:
debugger;
if (elements[i].checked amp;amp; elements[i].nextSibling.nodeValue != null) {
Это устранит ошибку, хотя я понятия не имею, какие последствия это будет иметь для вашей программы.
Ошибка вызвана тем фактом, что elements[i].nextSibling.nodeValue
при проверке имеет значение null.
Комментарии:
1. Привет, Saturnix, спасибо тебе за твой вклад. Теперь ошибка исчезла, но функция не работает. Это означает, что я не получаю итоговые данные… У вас есть идея?
2. элементы[i].nextSibling.nodeValue равно нулю. Напишите «debugger» в строке над if, откройте с помощью Chrome dev tools open (F12), перезагрузите страницу и наведите указатель мыши на nextSibling, чтобы увидеть, что внутри нее.
3. Привет, спасибо за ваш вклад. Ошибка теперь исчезла, но вывод такого итога и другие вычисления не работают. Есть ли способ проверить правильность кодирования и логики? Ранее was работал без каких-либо проблем. Я думаю, что это то, что нужно сделать с новой версией jquery. Любой ввод, с чего начать?
4. Я получаю это сообщение в консоли: [Нарушение] Обработчик ‘setTimeout’ занял 72 мс jquery-3.3.1.мин.js: 2 ..