Теперь, когда у меня есть массив элементов. Я хочу превратить их в массив строк и проанализировать информацию после onclick. Итак, я думаю, у меня есть два вопроса: во-первых, как превратить их в строки, а во-вторых, как использовать регулярное выражение для их анализа? Я могу написать регулярное выражение сам, но хочу знать, как применить его к строке в javascript.

Сначала я сделал это:

var array = $('a[onclick*="findCustomer"]');

Теперь у меня есть список:

    <a href="javascript:void(0);" onclick="findCustomer('James Smith',808-371-   4984,"Hawaii")">James Smith</a>

Итак, мой вопрос в том, как превратить его в массив строк и как извлечь из него имя клиента, номер телефона и состояние.

-1
TitanTheYaphet 23 Янв 2013 в 07:01
Какую информацию разбирать? Эти элементы образуют поля, и вам нужны значения? Дивы с данными элемента? Если вам нужна дополнительная информация, вам будет полезен образец HTML.
 – 
Chris Baker
23 Янв 2013 в 07:05
1
Прочтите это о том, почему вам не следует пытаться разобрать x / html с регулярным выражением
 – 
Paul S.
23 Янв 2013 в 07:27
808-371- 4984 не заключен в кавычки, а Hawaii - только в двойных кавычках, которые уже есть, поэтому используйте обратную косую черту или поместите простые кавычки.
 – 
Bali Balo
23 Янв 2013 в 07:31
Обратная косая черта не является escape-символом в HTML (как в JavaScript). Вам нужно будет закодировать " в &quot; или &#34; и закодировать ' как &#39; (для безопасности).
 – 
Paul S.
23 Янв 2013 в 07:39
Да ты прав, моя беда.
 – 
Bali Balo
23 Янв 2013 в 07:44

1 ответ

Лучший ответ

Итак, мой вопрос в том, как превратить его в массив строк и как извлечь из него имя клиента, номер телефона и состояние.

Сначала получите все атрибуты onclick (поскольку вы, кажется, хотите использовать jQuery, это можно сделать с помощью $.map)

var array = $.map($('a[onclick*="findCustomer"]'), function (elm) {
    return elm.getAttribute('onclick');
}); // `array` is now an array of the _onclick_ attributes

Затем проанализируйте атрибут, например, с помощью $.each

$.each(array, function (key, val) {
    var parts = val.slice(val.indexOf('(')+1, val.lastIndexOf(')')).split(',');
    // parts[0] is name, parts[1] is number, parts[2] is state
    // you'll need to trim quotes
});

Это действительно плохая идея - пытаться анализировать x / HTML с помощью RegExp, как объяснено здесь . Показанный мной метод подойдет вам, поскольку вы знаете структуру атрибута onclick . Однако гораздо лучшим решением было бы иметь доступ к этим данным с помощью другого метода, который вообще не требует синтаксического анализа HTML.

0
Community 23 Май 2017 в 13:24