Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2020, 05:38
Новичок на форуме
Отправить личное сообщение для mat45 Посмотреть профиль Найти все сообщения от mat45
 
Регистрация: 18.12.2020
Сообщений: 5

Не работает split
function Table()
{
var a=mytextarea.value.split(/$\s*/m);
najal=0;
if(a.length==0)
{
var n=Chislo.value;
}
else 
{
n=a.length;
mytextarea.style.height=n*15+'px';
ChisloYchastkov.value=n;
}

var n=ChisloYchastkov.value;

if(a.length>0)
{
for(var i=1;i<=n;i++)
{
element1="ploshad"+i;

abs1=a.split(";",1);
document.getElementById(element1).value=abs1[i-1];
}
for(var i=1;i<=n;i++)
{
element2="koordinat"+i;
abs2=a.split(";",1);
document.getElementById(element2).value=abs2[i-1];
}

Есть массив данных которые я ввожу в mytextarea
75;180;0;170;20;230;30;250;0;
80;180;0;170;20;230;30;250;0;
75;180;0;170;20;230;30;250;0;
70;180;0;170;20;230;30;250;0;
80;180;0;170;20;230;30;250;0;
65;180;0;170;20;230;30;250;0;
90;180;0;170;20;230;30;250;0;
70;180;0;170;20;230;30;250;0;
60;180;0;170;20;230;30;250;0;
А в свою очередь split делит данные в разные input type=text, должно было получиться в одном input первое число 75, а во втором 180;0;170;20;230;30;250;0;, но вместо этого выводится сразу вся строка.
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2020, 07:40
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от mat45
должно было получиться в одном input первое число 75, а во втором 180;0;170;20;230;30;250;0;
split тут не поможет. он все равно разобьет строку по всем ';'

let s = '75;180;0;170;20;230;30;250;0;'
let sr = /(\d+);(.+)/.exec(s)

let abs1= sr[1]
let s1 = sr[2]
console.log(abs1, s1)

Последний раз редактировалось voraa, 18.12.2020 в 07:44.
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2020, 09:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от voraa
split тут не поможет.

let s = '75;180;0;170;20;230;30;250;0;'
let sr = s.split(/(?<=^\d+);/)

let abs1= sr[0]
let s1 = sr[1]
console.log(abs1, s1)
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2020, 16:10
Новичок на форуме
Отправить личное сообщение для mat45 Посмотреть профиль Найти все сообщения от mat45
 
Регистрация: 18.12.2020
Сообщений: 5

Uncaught TypeError: s.split is not a function если я использую 'a' вместо '75;180;0;170;20;230;30;250;0;'.
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2020, 16:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

mat45,
???
Ответить с цитированием
  #6 (permalink)  
Старый 18.12.2020, 16:43
Новичок на форуме
Отправить личное сообщение для mat45 Посмотреть профиль Найти все сообщения от mat45
 
Регистрация: 18.12.2020
Сообщений: 5

if(a.length>0)
{
for(var i=1;i<=n;i++)
{
element1="ploshad"+i;
element2="koord"+i;
let sr = mytextarea.value.split(/(?<=^\d+);/);
let abs1= sr[0];
let s1 = sr[1];
console.log(abs1, s1);
document.getElementById(element1).value=abs1;
document.getElementById(element2).value=s1;
}
}


Я поменял, но вот что мне выдает
Изображения:
Тип файла: jpg 123.jpg (166.8 Кб, 4 просмотров)
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2020, 17:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

mat45,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  td{
      border: 1px solid #0000FF;
  }
  table{
      border-collapse: collapse;
  }
  input
  </style>
</head>
<body>
<table>
        <tbody>
        </tbody>
</table>
<textarea id=mytextarea cols="35" rows="10">
75;180;0;170;20;230;30;250;0;
80;180;0;170;20;230;30;250;0;
75;180;0;170;20;230;30;250;0;
70;180;0;170;20;230;30;250;0;
80;180;0;170;20;230;30;250;0;
65;180;0;170;20;230;30;250;0;
90;180;0;170;20;230;30;250;0;
70;180;0;170;20;230;30;250;0;
60;180;0;170;20;230;30;250;0;</textarea>
<script>
let ar = mytextarea.value.trim().split(/[\n\r]+/);
ar = ar.map((str, i) => {
let td = document.createElement("TD"), tr = document.createElement("TR");
let [a, b] = str.split(/(?<=^\d+);/)
let input = document.createElement("input");
input.value = a;
td.append(input);
tr.append(td);
td = document.createElement("TD");
input = document.createElement("input");
input.value = b;
td.append(input);
tr.append(td);
return tr
});
let tbody = document.querySelector("table tbody");
tbody.append(...ar)
</script>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 18.12.2020, 18:11
Новичок на форуме
Отправить личное сообщение для mat45 Посмотреть профиль Найти все сообщения от mat45
 
Регистрация: 18.12.2020
Сообщений: 5

Я попытался вставить это в код, но вся проблема в том он создает отдельную таблицу, у меня уже создаются отдельные input(такой как ploshad и koord), которые потом используются для вычислений, и я пытался переписать код что бы данные вставлялись туда, но что то не получилось.
Ответить с цитированием
  #9 (permalink)  
Старый 18.12.2020, 18:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

mat45,

<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  input[id^="ploshad"] {
      width: 3em;
  }
  input[id^="koordinat"] {
      width: 13em;
  }

  </style>
</head>
<body>
<input type="text" id="ploshad1">
<input type="text" id="koordinat1">
<br>
<input type="text" id="ploshad2">
<input type="text" id="koordinat2">
<br>
<input type="text" id="ploshad3">
<input type="text" id="koordinat3">
<br>
<input type="text" id="ploshad4">
<input type="text" id="koordinat4">
<br>
<input type="text" id="ploshad5">
<input type="text" id="koordinat5">
<br>
<input type="text" id="ploshad6">
<input type="text" id="koordinat6">
<br>
<input type="text" id="ploshad7">
<input type="text" id="koordinat7">
<br>
<input type="text" id="ploshad8">
<input type="text" id="koordinat8">
<br>
<input type="text" id="ploshad9">
<input type="text" id="koordinat9">
<br>
<input type="text" id="ploshad10">
<input type="text" id="koordinat10">
<br>
<textarea id=mytextarea cols="35" rows="10">
75;180;0;170;20;230;30;250;0;
80;180;0;170;20;230;30;250;0;
75;180;0;170;20;230;30;250;0;
70;180;0;170;20;230;30;250;0;
80;180;0;170;20;230;30;250;0;
65;180;0;170;20;230;30;250;0;
90;180;0;170;20;230;30;250;0;
70;180;0;170;20;230;30;250;0;
60;180;0;170;20;230;30;250;0;</textarea>
<script>
let ar = mytextarea.value.trim().split(/[\n\r]+/);
ar.forEach((str, i) => {
let [a, b] = str.split(/(?<=^\d+);/);
let input = document.getElementById(`ploshad${++i}`);
input.value = a;
input = document.getElementById(`koordinat${i}`);
input.value = b;
});
</script>
</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 18.12.2020, 19:13
Новичок на форуме
Отправить личное сообщение для mat45 Посмотреть профиль Найти все сообщения от mat45
 
Регистрация: 18.12.2020
Сообщений: 5

рони,
Перекинул часть, и все иделально работает, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Скрипт работает только в Firebug photos-masters Элементы интерфейса 4 07.12.2011 19:12
Не работает split Basili4 Общие вопросы Javascript 3 19.06.2010 10:53
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11