2015-05-19 2 views
-1

Я пытаюсь извлечь 3 числа из строки и поместить их в переменныеИзвлечение 3 числа из строки и поместить их в переменные

Это HTML-

<a href="javascript:theNumbers(09222004, 05232015, '4815162342');">Click Me</a> 

Я получил HREF строку с JQuery

$('a').attr('href') 

и результат

javascript:theNumbers(09222004, 05232015, '4815162342'); 

Я хочу, чтобы извлечь каждое значение (09222004 и 05232015 и 4815162342) для переменной, так что я могу использовать каждый номер в другом процессе

+0

Вы уверены, что вам нужно разбить строку? Похоже, ваш код должен вызывать функцию 'theNumbers' с тремя аргументами. В этом случае просто получите аргументы из самой функции. –

+0

@MikeMcCaughan Да, я хочу использовать каждый номер в разных процессах, кстати, я не могу изменить источник, потому что я использую свой код в расширении chrome. – Jim

ответ

1
<a data-numbers="'09222004, 05232015, 4815162342'">Click Me</a> 

получить значение

var numbers =$('a').attr('data-numbers').split(','); 

заносить массив

[ '09222004', '05232015' , '4815162342']

+0

Я не могу изменить источник, потому что я использую свой код в расширении хром. – Jim

+0

use replace: numbers = numbers.replace ("javascript: theNumbers (", ""). replace (")", ""). split (',') – user3227295

+0

Я пытался использовать его, но это не работает для меня. http://jsfiddle.net/91yp5uaf/ – Jim

0

String.prototype.split()str.split([separator[, limit]]) поможет вам здесь, скобки, то запятые.

Parse элементы массива размером 3 вы в конечном итоге с

1

Взгляните на это, я надеюсь, что это поможет:

$(document).ready(function(){ 
 
    // get href text attribute 
 
    var mString = $('a').attr('href'); 
 
    // get the text between() 
 
    var mResult = mString.match(/\((.*)\)/); 
 
    // split mResult 
 
    var numbers = mResult[1].split(','); 
 
    // show the result 
 
    for(var i = 0; i < numbers.length; i++){ 
 
    $("#numbers").append('Number ' + i + ' is ' + numbers[i] + '<br>');  
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="javascript:theNumbers(09222004, 05232015, '4815162342');">Click Me</a> 
 
<div id="numbers"></div>

0

Просто для записи, принятый ответ не выполняет требование возврата используемых номеров. Фактически принятый ответ (метод А ниже) не работает вообще, как уже отмечалось ОП. Ответ, приведенный в скрипке (метод B), лучше, но все же возвращает неверные данные, то есть parseInt (s) = NaN.

Однако можно вернуть чистый набор данных путем простого удаления нечисловых символов и расщепление на запятых:

href.replace(/[^0-9,]/g,'').split(','); 

Выполните фрагмент кода, чтобы сравнить вывод различных методов:

<html> 
 
<body> 
 
<xmp id="stdout" style="background-color:black; color:lime;padding:1em;"></xmp> 
 
<script type="text/javascript"> 
 
    
 
    var data = {}, href = "javascript:theNumbers(09222004, 05232015, '4815162342');" 
 
    
 
    data.method_A = href.split(',');  
 
    
 
    data.method_B = href.replace("javascript:theNumbers(","").replace(");","").split(','); 
 

 
    data.method_C = href.replace(/[^0-9,]/g,'').split(','); 
 

 
    document.getElementById('stdout').innerHTML = JSON.stringify(data, null, ' '); 
 
    
 
</script> 
 
</body> 
 
</html>

Смежные вопросы