Javascript no jquery - разделить список из одного столбца textareas (неизвестное количество строк) и отобразить в CSV-символах 150 - PullRequest
0 голосов
/ 08 декабря 2011

Я пытаюсь собрать то, что я думал, было бы простым решением для друга.

У него есть список писем фанатов, которые он собирает на концертах и ​​на своем сайте.

Он кладет их в один файл столбца и сохраняет их.

Ему нужно, чтобы они были в формате с разделителями-запятыми, содержащим по 150 на каждую, одну строку.

Ему нужна "простая" локальная HTML-форма, в которую он может вставить список и отобразить результаты.

Итак, я начал работать над этим, но это доказало мои способности.

Пока у меня есть некоторые основы, но мне действительно нужна помощь. Как видите, я действительно новичок.

     <html><head>
        <script type="text/javascript">

        function makeit(){

        var enteredEmails = document.getElementById("emails").value;
        var cnt = document.getElementById("breakcnt").value;
        var mails = enteredEmails.toString();
        var textareacnt = '1';

        // Now I think I need to loop or create arrays of emails up to cnt //

        csvmails = mails.splice(0,cnt)

        // Then dynamically generate some textareas or boxes populated with a single comma delimited line of  cnt" emails //

 document.write("<textarea id=\"textareacnt\">" + csvmails + "</textarea>")

 textareacnt++; 

        }
        </script>
        </head><body>
        <form onsubmit="makeit();">
        <textarea name="emails" id="emails" rows="10" cols="75"></textarea><br />
        <input type="text" name="breakcnt" id="breakcnt"><br />
        <input type="submit" name="submit" value="submit">
        </form>
    <textarea id="results"></textarea>
        </body></html>

В текстовое поле будут вставлены электронные письма, например:

amail1@sometld.com
bmail1@sometld.com
cmail1@sometld.com
amail4@sometld.com
zmail10@sometld.com

... до 6000 писем фанатов, которые он собрал за годы

Ему нужны результаты:

amail1@sometld.com,bmail1@sometld.com,cmail1@sometld.com,amail4@sometld.com,zmail10@sometld.com

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

Я не могу заставить что-либо работать, и я потратил на это 6 часов.

Может кто-нибудь помочь, пожалуйста? Я чувствую себя полным идиотом.

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

Все, что вам нужно сделать, это разделить текст на массив, а затем разделить массив в цикле и соединить вырезанные фрагменты следующим образом:

var emails= document.getElementById('emails').value.split(/\s+/), list="";
while(emails.length) {
  list+=emails.splice(0,150).join(',')+"\n";
}
//list now has the result you are looking for

Я сделал пример того, какэто здесь: http://jsfiddle.net/PfB42/2/

Все, что вам нужно сделать, это вставить электронные письма в текстовую область, и он автоматически изменит формат на тот, который вы ищете, и вставить его в область <pre> нижетекстовая область

0 голосов
/ 08 декабря 2011

Ой, не используйте эти сложные сценарии. Строки имеют функции именно для этой цели:

var input = document.getElementById("emails").value;
input = input.replace(/\r\n/g, "\n"); // I hate this
var emails = input.split("\n"); // make an Array
var output = emails.join(","); // should we use ", " instead?

Конечно, вы можете поместить все в одну строку; -)

0 голосов
/ 08 декабря 2011

Это должно достичь того, что вы хотите.Не будь таким строгим с собой, приятель :) 1001 * 1002

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...