Требуется помощь в проверке функции удаления конечных пробелов.
Подскажите пожалуйста где ошибка, создаю функцию Rtrim и затем подключаю её к html документу но она не хочет работать
function rtrim(xstr){ if (! (xstr.lastlndexOf (" ") == xstr.length - 1)) return xstr; var astr = xstr.split(" "); var i = astr.length -1 while (i>0){ if (!(astr[i] == (""))) break; i; } return xstr = xstr.substring(0, 1+1); } Затем в html пишу <HTML> <HEAD> <script language="JavaScript" type="text/javascript" src="Ltrim.js"></script> <script language="JavaScript" type="text/javascript" src="Rtrim.js"></script> <TITLE> </TITLE> <script> inv=window.prompt("Введите текст с пробелами в начале и в конце строки"," ааа "); window.alert("/"+inv+"/"); window.alert("/"+Ltrim(inv)+"/"); window.alert("/"+Rtrim(inv)+"/"); </script> </HEAD> <BODY> </BODY> </HTML> Ранее создала функцию ltrim и подключила её и она без проблем работает а эта не поддаётся никак :( очень буду признательно если кто подскажет где ошибка |
В следующий раз пожалуйста оформляйте код в тегах, а то читать не удобно :(
А теперь к делу: - Во первых у Вас ошибки в регистре букв, сама функция называется rtrim, а вызываете Вы Rtrim. Т.к. JS восприимчив к регистру букв, то думает что такой функции не существует. - Во вторых так и не понял что за функция Ltrim и для чего она вызывается, ну в общем это и не важно :) , но в моем случае (соответственно) вылетает ошибка, если не убрать строчку с вызовом данной функции. - В третьих вы возвращаете substring(0, 1+1); в своей функции. т.е. первые два символа т.к. второй аргумент функции указывает количество символов начиная с первого. - В четвертых, самое главное (!). В цикле Вы ничего не делаете со счетчиком цикла, в итоге получаем вечный цикл. Вроде бы все Ваши ляпы (за исключением непонимания мною использования метода split в Вашем случае) В общем я не JS гуру, но вот что у меня получилось, вроде бы работает: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8" /> <title></title> <script type="text/javascript"> function rtrim(str){ var i = str.length - 1; if(str.charAt(i)!= " ") return str; while(i){ if(str.charAt(i) == " ") i--; else break; } return str.substr(0, i+1); } inv = prompt("Введите текст с пробелами: ", " abc "); window.alert("/"+inv+"/\n/"+rtrim(inv)+"/"); </script> </head> <body></body> </html> P.S. Хотелось бы узнать мнение знающих людей по поводу моего кода. Как бы можно было его улучшить и т.д., не ругайтесь я только учусь помогать :) |
Спасибо за помощь нашла свои ошибки и исправила.
Метод split использовала для создания массива из слоев строки, а функция Ltrim убирает начальный пробел. Вот только ошибка у меня не вылезала, как у вас пока вы не убрали строку с вызовом данной функции может это от того, что у меня сами функции Rtrim и Ltrim записаны совершенно в другие файлы в разрешением *.js сори что в тегах не оформила в след. раз буду иметь ввиду. |
Просто Вы в приведенном примере кода зачем то вызывали Ltrim которая нигде не описана. Ошибка из-за этого и возникала. (в слудующий раз чистите код от таких вещей :) )
|
Это пипец конечно какое решение для тримеров, такие вещи надо делать с помощью регулярных выражений, а не посимвольным перебором строки.
function rtrim(str) { return str.replace(/\s+$/, ''); } |
Часовой пояс GMT +3, время: 09:10. |