2010-11-24 2 views
3

У меня есть несколько странная ситуация, когда мне нужно исправить ошибку на веб-сайте, где при создании строки (динамически) она добавляет 5 пробелов перед строкой и 5 пробелов после строки , Очевидно, лучше всего было бы исправить код конца и избавиться от этих пространств ... Короче говоря, я не могу, и я должен сделать это с помощью javascript. Я не совсем уверен, как это сделать, но это то, что я имел в видуудалить части строки с javascript

<!--Dynamically generated string including spaces added in backend--> 
<span id="balance">  245.34  </span> 

Моя идея состояла в том, чтобы сделать следующее с Javascript

function removespace() 
{ 
    var oldString = document.getElementById('balance'); 
    var newString = (THIS IS WHERE I AM STUCK... I NEED TO REMOVE THE SPACES); 
    document.getElementByID('balance').innerHTML = newString; 
} 

Кто-нибудь есть какие-либо предложения? Спасибо!

ТАКЖЕ ЗАБУДЬТЕ К МЕНЮ: Я не могу использовать любые библиотеки javascript, такие как прототип или jquery.

Edit: я это до сих пор ... но не кажется, что это будет работать:

<span id="balance">  $245.00  </span> 

<script> 
function removespace() 
{ 
    var oldString = document.getElementById('balance'); 
    var newString = oldString.trim(); 
    document.getElementByID('balance').innerHTML = newString; 
} 

String.prototype.trim = function() { 
return this.replace(/^\s+|\s+$/g,""); 
} 
</script> 

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

function trim(stringToTrim) { 
return stringToTrim.replace(/^\s+|\s+$/g,""); 
} 
var oldString = document.getElementById('balance').innerHTML; 
var newString = trim(oldString); 
document.getElementById('balance').innerHTML = newString; 
+0

Зачем вам нужно удалить эти места? HTML сжимает непрерывные пространства до одного. Таким образом, отображаемая HTML-страница должна показывать только одно место до и после значения (но все равно это может быть нежелательно). – 2010-11-24 14:04:41

+0

Потому что даже если он показывает 1 пробел до или после него, нарушает дизайн страницы – Bill 2010-11-24 14:06:09

+0

Ок. Я предполагал это, но я хотел проверить ... иногда люди делают проблему, хотя у них их нет;) – 2010-11-24 14:13:04

ответ

8

Unfortunetly JavaScript не имеет trim() функцию. Но вы можете свернуть свой собственный:

String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,""); 
} 

, а затем сделать:

var newString = oldString.trim(); 

выше функция от this website (первый результат на Google для "JavaScript облицовку")

редактирования (на основе ваше обновление на ваш вопрос и комментарии):

изменение

var oldString = document.getElementById('balance'); 

в

var oldString = document.getElementById('balance').innerHTML; 

и изменить

document.getElementByID('balance').innerHTML = newString; 

в

document.getElementById('balance').innerHTML = newString; // notice the lower case d 

и вы должны вызвать функцию removespace в какой-то момент (но я уверен, что вы уже делаете, что):

+1

Это то, к чему я только хотел подключиться, так +1 :). Если OP использует фреймворк или инструментарий, посмотрите в их API для метода trim(), чтобы вы не дублировали код! – linusthe3rd 2010-11-24 14:04:35

+0

Я не могу использовать какие-либо библиотеки или фреймворки :( – Bill 2010-11-24 14:07:55

+1

Это простой ванильный JavaScript-код. Никакой библиотеки не требуется (не позволяйте «прототипу» путать вас, это всего лишь часть возможностей JavaScript, к которой вы можете расширить существующие классы). – 2010-11-24 14:10:09

0

Writti нг из моей головы.

var elem = doc.getElementById('balance'); 
var oldString = elem.innerHTML; 
elem.innerHTML=oldString.(/^\s+|\s+$/g,"") 

Что-то в этом роде?

Edit: да, только мое первое пространство удаляется, так что я украла пробелы из числа ответов 1 :)

-1

использование облицовку(), чтобы удалить все пробелы

вар NewString = oldString.отделка();

или использовать замену, чтобы заменить пробелы с пустой строкой:

вар NewString = oldString.replace (»», "");

-1

с JQuery это просто:

var newStr = jQuery.trim(oldStr); 
-1

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

var c = '1234'; 
d = c * 1; 

затем обратно в строку, если это необходимо по:

d = c.toString(); 
0

Вы пытаетесь что-то вроде этого

str.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""); 
Смежные вопросы