2012-07-31 1 views
0

Я новичок в Javascript ... и я слышал о jQuery, но не знаю, как его использовать, поэтому, пожалуйста, несите с моим полным недостатком знаний здесь ... :)Как ссылаться на функцию Javascript для тега div для добавления запятых?

I Я динамически импортирую информацию из базы данных Excel на веб-сайт. Он отлично работает, за исключением того, что ни один из чисел не имеет запятых - это проблема форматирования, которую я не могу изменить в источнике, поэтому мне нужно изменить ее в коде веб-сайта.

Соответствующий HTML код выглядит следующим образом:

<tr><td class="num">191025</td><td>Stuff</td><td class="num">$60</td></tr> 
<tr><td class="num">184160</td><td>Other Stuff</td><td class="num">$15</td></tr> 

Я хочу использовать JavaScript (или JQuery - независимо от того работает), чтобы добавить запятые ко всем существующим «номер» классов (так 191025 будет выглядеть как 191,025).

я ковыряться этим сайтом и другими, и нашел этот сайт: http://www.mredkj.com/javascript/nfbasic.html, который имеет этот общественный код домена:

function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

который кажется большим, и я добавил его к моей существующей странице внешнего .js, что я ссылку на моей странице html.

Однако проблема заключается в том, как я могу использовать код? Глядя на примеры на этой странице, это выглядит, как я должен был бы сделать что-то вроде этого:

<tr><td class="num">addCommas(191025)</td><td>Stuff</td><td class="num">$60</td></tr> 

И это просто не реально - есть сотни этих чисел, и я просто не могу обновлять каждый один из них индивидуально.

Я уверен, что есть способ, которым Javascript (или jQuery?) Может автоматически применять кодирование к существующим классам «num» для вставки запятых ... но я понятия не имею, как это сделать. Итак, все это приводит меня к моему вопросу: Как эффективно применить этот (или другой - лучше?) Код к div-классу, чтобы добавить запятые?

Я сильно признателен за любую помощь ... но, пожалуйста, имейте в виду, мой новичка-Несс, и дайте мне знать, что нужно идти во внешней .js листа &, что идет на странице .html.

спасибо !!

+1

http://jqfundamentals.com/ хороший сайт для начинающих. – jbabey

+0

+1 для jqfundamentals.com – devundef

+0

Спасибо, @jbabey - я проверю это и посмотрю, смогу ли я начать понимать код jQuery, который я вижу. – AmyB

ответ

1

JQuery решение:

$('.num').each(function() { 
    $(this).text(addCommas($(this).text())); 
});​​​​​​​​​​ 

Javascript решение (не будет работать в IE, поскольку он не поддерживает getElementsByClassName)

var elements = document.getElementsByClassName('num'); 
var textPropertyToUse; // cross-browser support 

for (var i = 0; i < elements.length; i++) { 
    textPropertyToUse = 'textContent' in elements[i] ? 
     'textContent' : 
     'innerText'; 

    elements[i][textPropertyToUse] = addCommas(elements[i][textPropertyToUse]); 
} 

Рабочий пример: http://jsfiddle.net/XpbJV/

+0

IE поддерживает 'getElementsByClassName', начиная с версии 9. Кроме того, IE8 поддерживает' querySelectorAll', поэтому вы можете использовать его для большей совместимости. –

+0

... но не используйте '.innerText'. Он нестандартен, не имеет широкой поддержки и ужасно медленный в некоторых современных браузерах, которые его поддерживают. Используйте его только как резервную копию для IE8 и ниже. –

+0

@amnotiam Я никогда не уверен, что рекомендовать вместо 'innerText', если они не используют jQuery, что вы рекомендуете? – jbabey

1

Execute этот код на странице нагрузка:

$(".num").each(function() { 
    var self = $(this), text = self.text(); 
    self.text(addCommas(text)); 
}); 
+0

Как выполнить код на загрузке страницы? Я попробовал это в заголовке страницы: ' ' – AmyB

+0

это правильно Если он не работает, проверьте консоль браузера на наличие ошибок. js. – devundef

+0

Хммм. Может ли факт, что данные страницы загружаются через php, вызывает проблему с кодом jQuery? – AmyB

0

Очень простое решение JQuery будет ...

$(".num").text(addCommas); 

... до тех пор, пока вы меняете addCommas сигнатуру к этому ...

function addCommas(i, nStr) 

Это будет работать, потому что ваш addCommas бы текущее содержание текста в качестве второго аргумента и возвращает обновленное содержание текста. Вот как работает большинство итераторов в своих методах jQuery.

DEMO:http://jsfiddle.net/gprf6/

+0

Выглядит удивительно просто ... но где я могу поместить его в свой код, чтобы он работал? – AmyB

+0

@AmyB: Is это единственный JavaScript на вашей странице? Если это так, я бы не стал использовать jQuery. Но в любом случае, оберните его в теги '' и поместите в '' непосредственно перед тегом ''. –

+0

... и убедитесь, что вы загрузили библиотеку jQuery. –