Не работает 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;, но вместо этого выводится сразу вся строка. |
Цитата:
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) |
Цитата:
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) |
Uncaught TypeError: s.split is not a function если я использую 'a' вместо '75;180;0;170;20;230;30;250;0;'.
|
mat45,
??? |
Вложений: 1
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; } } Я поменял, но вот что мне выдает |
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> |
Я попытался вставить это в код, но вся проблема в том он создает отдельную таблицу, у меня уже создаются отдельные input(такой как ploshad и koord), которые потом используются для вычислений, и я пытался переписать код что бы данные вставлялись туда, но что то не получилось.
|
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> |
рони,
Перекинул часть, и все иделально работает, спасибо! |
Часовой пояс GMT +3, время: 11:45. |