Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Въпрос отновсно функция за добавяне на нов ред

Featured Replies

Здравейте скъпи приятели и колкеги. Срешнах един проблем с една функция на JS. И Ви моля за малко помощ. На каратко каква е целна на функцията. Тази ф-я зима данни от един XML файл, който е вързан с база данни. Самата функция създава нов ред с данните от XML файла. Проблема е следния. Тази ф-я трабва да провери дали съществува елемент с това име. Ако съществува да не добавя нов ред, а само да умеличи номера на елемента с 1, ако няма такъв елемент да го добави в нов ред.

Ето я и ф-ята:

//Find name

function getNames(sid,sname,snumber) {

	// only if req shows "loaded"

	if (req.readyState == 4) {

		// only if "OK"

		if (req.status == 200) {

			var response = req.responseXML;

			//Get the xml root

			var root = response.getElementsByTagName('names')[0];

			var names = root.getElementsByTagName('name');

			document.getElementById('findDiv').innerHTML="";

			tnames = document.createElement("table");

			tnames.setAttribute("width","100%");

			tnames.setAttribute("cellspacing","0");

			tbnames = document.createElement("tbody");

			tnames.appendChild(tbnames);


			for(i=0;i<names.length;i++){

				var sid = stocks[i].getElementsByTagName("id")[0].firstChild.nodeValue;

				var sname = stocks[i].getElementsByTagName("name")[0].firstChild.nodeValue;

				var snumber = stocks[i].getElementsByTagName("quantity")[0].firstChild.nodeValue;


				if (sname==exist){


				row = document.createElement("tr");

				tbnames.appendChild(row);

				cell = document.createElement("td");

				cell.className="tvalue_lnk";

				cell.onclick= new Function("setName('"+sid+"','"+sname+"','+snumber+"')");

				cell.innerHTML='<input type="hidden" value="'+sid+'">'+sname;


				sit = document.getElementById('tbl_sitems');

				sittb = sit.getElementsByTagName('tbody')[0];

				row = document.createElement("tr");

				row.onclick = new Function("selectRow(document.getElementById('tbl_sitems'),this.rowIndex);");

				sittb.appendChild(row);

				cell1 = document.createElement("td");

				row.appendChild(cell1);

				cell2 = document.createElement("td");

				row.appendChild(cell2);

				cell3 = document.createElement("td");

				row.appendChild(cell3);

				cell1.className="tvalue";

				cell1.setAttribute("align","center");

				cell2.className="tvalue";

				cell2.setAttribute("align","center");

				cell3.className="tvalue";

				cell3.setAttribute("align","center");

				cell1.innerHTML='<input type="hidden" name="id[]" value="'+sid+'">';

				cell2.innerHTML='<input type="tesx" name="name[]" value="'+sname+'">'+sname;

				cell3.innerHTML='<input type="text" id="number[]" name="number[]" value="'+snumber+'">';

				selectRow(document.getElementById('tbl_sitems'),row.rowIndex);

				calcSss();

				}

				else {

				row = document.createElement("tr");

				tbnames.appendChild(row);

				cell = document.createElement("td");

				cell.className="tvalue_lnk";

				cell.onclick= new Function("setName('"+sid+"','"+sname+"','+snumber + 1 +"')");

				cell.innerHTML='<input type="hidden" value="'+sid+'">'+sname;


				sit = document.getElementById('tbl_sitems');

				sittb = sit.getElementsByTagName('tbody')[0];

				row = document.createElement("tr");

				row.onclick = new Function("selectRow(document.getElementById('tbl_sitems'),this.rowIndex);");

				sittb.appendChild(row);

				cell1 = document.createElement("td");

				row.appendChild(cell1);

				cell2 = document.createElement("td");

				row.appendChild(cell2);

				cell3 = document.createElement("td");

				row.appendChild(cell3);

				cell1.className="tvalue";

				cell1.setAttribute("align","center");

				cell2.className="tvalue";

				cell2.setAttribute("align","center");

				cell3.className="tvalue";

				cell3.setAttribute("align","center");

				cell1.innerHTML='<input type="hidden" name="id[]" value="'+sid+'">';

				cell2.innerHTML='<input type="tesx" name="name[]" value="'+sname+'">'+sname;

				cell3.innerHTML='<input type="text" id="number[]" name="number[]" value="'+snumber + 1+'">';

				selectRow(document.getElementById('tbl_sitems'),row.rowIndex);

				calcSss();

				}

			}

		}

		document.getElementById('findDiv').appendChild(tnames);

	} else {

		alert("There was a problem retrieving the XML data:\n" + req.statusText);

	}

}

Благодаря предварително на всички.

И къде по-точно се появява проблема ?

Не намира реда или не увеличава стойността ?

Може ли линк към страницата с данните ?

  • Автор

За съжаление линк немога да дам.

Проблема е че и след проверката на елемента добавя нов ред, а нетрупа номер.

Забравих да поясна още в самото начало че имам едно текстово поле в което се въвеждат данни (нещо подобно на търсачка) и като се извика някой елемент трябва да го провери дали съществува, ако не да добави нов ред, ако е да да увеличи номера с 1-ца.

Реда да увеличение ми е (ако не съм го объркал)

cell.onclick= new Function("setName('"+sid+"','"+sname+"','+snumber + 1 +"')");

....

 cell3.innerHTML='<input type="text" id="number[]" name="number[]" value="'+ ++snumber+'">';

т.е. представете си че имате въведено примерно:

(номер|име|брой)

1|тест|1

При повторно въвеждане на "тест" да се получи

(номер|име|брой)

1|тест|2

  • Автор
Error: unterminated string literal

Line: 49, Column: 85

Source Code:

cell.onclick= new Function("setName('"+sid+"','"+sname+"','+snumber+"')");

Защото имам още една ф-я

function setName(sid,sname,snumber){

	document.getElementById('nameDiv0').innerHTML='<input type="hidden" name="name1" value="'+sid+'">'+sname;

	document.getElementById('nameDiv0').innerHTML='<input type="hidden" name="name2" value="'+sid+'">'+snumber;


	showNameDiv(0);

Защото имам още една ф-я

function setName(sid,sname,snumber){

	document.getElementById('nameDiv0').innerHTML='<input type="hidden" name="name1" value="'+sid+'">'+sname;

	document.getElementById('nameDiv0').innerHTML='<input type="hidden" name="name2" value="'+sid+'">'+snumber;


	showNameDiv(0);

Това каква връзка има с незатворените кавички ?

Защо не даваш целия код, а само отделни части ?

  • Автор
Това каква връзка има с незатворените кавички ?

Защо не даваш целия код, а само отделни части ?

Добре де е сега ще пусна целия код

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.