Javascript-форум (https://javascript.ru/forum/)
-   Я не знаю javascript (https://javascript.ru/forum/ya-ne-znayu-javascript/)
-   -   Помогите новичку (https://javascript.ru/forum/ya-ne-znayu-javascript/30399-pomogite-novichku.html)

dmpol18 03.08.2012 00:20

Помогите новичку
 
Вложений: 1
есть "простой" код
не пойму почему зацикливается while
делаю под if - все работает, т.е. команды правильные
смысл в том, чтобы вводишь например
"карандаш Master 2 шт."
на выходе
"master_2"
кирилицу убрал, "." и "," заменил на "-",
теперь надо, чтобы если в конце - или _
то удаляем, пока в конце не будет символ или цифра...
помогите пожалуйста...

кстати параллельно - создал кнопку, но по онклик не активируется функция -
пришлось ссылку делать(

Gozar 03.08.2012 00:32

Цитата:

Сообщение от dmpol18
не пойму почему зацикливается while

Никогда так не делай:

var i = 1;
while (i>0) {	
    if(...) { 
    } 
    else {
	i = 0
    }
}

Никогда не присваивай противоречивые условия, если не уверен в результате.

Gozar 03.08.2012 00:36

ps: ты на каком языке пишешь мил человек?

var lastChar = 'Охренеть';
if(lastChar = '-' || '_') {
    alert('фига се');		
}

Gozar 03.08.2012 00:40

А вот ещё тебе фокус:

var lastChar = 'Охренеть';
if(lastChar == '-' || '_') {
    alert('фига се');		
}


И наконец, логичное решение:
var lastChar = 'Охренеть';
if(lastChar == '-' || lastChar == '_') {
    alert('фига се');		
} 
else {
    alert('Всё ок');
}

dmpol18 03.08.2012 00:42

Цитата:

Сообщение от Gozar (Сообщение 194155)
ps: ты на каком языке пишешь мил человек?

var lastChar = 'Охренеть';
if(lastChar = '-' || '_') {
    alert('фига се');		
}

если выполнить
var lastChar = urlCode.charAt(urlCode.length - 1);
	alert (lastChar);

то покажет последний символ... как и надо...


так что посоветуете?)
в плане кода))

Gozar 03.08.2012 00:46

Цитата:

Сообщение от dmpol18
так что посоветуете?)

Учи язык.

Я тебе уже показал что ты пишешь на неверной логике.

Gozar 03.08.2012 00:47

Цитата:

Сообщение от dmpol18
если

Если да кабы, во рту выросли грибы. Не различаешь равно(==) и присваивание (=).

dmpol18 03.08.2012 00:49

вот работает, но мне бы зациклить до букв/цифр

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>URL</title>
<script type="text/javascript">
function urlCode()
{
	var urlCode = document.getElementById("urlCode").value;
	var urlCode = urlCode.replace(/\s/g,"_");
	var urlCode = urlCode.replace(/\./g,"-")
	var urlCode = urlCode.replace(/\,/g,"-");
	var urlCode = urlCode.replace(/[а-яА-Я]/g,"");
	var urlCodeResult = document.getElementById("urlCodeResult");
	urlCodeResult.style.textTransform = "lowercase";
	var lastChar = urlCode.charAt(urlCode.length - 1);
	alert ('Строка:'+urlCode);
	alert ('Последний символ:'+lastChar);	
	if(lastChar = '-' || '_')
		{
			urlCode = urlCode.substring(0,urlCode.length-1);
			lastChar = urlCode.charAt(urlCode.length - 1);
		}
		urlCodeResult.appendChild(document.createTextNode(urlCode));	
}
</script>
</head>

<body>
<h2><a href="javascript:urlCode()">Convert</a></h2>
<form id="urlForm" onSubmit="urlCode()">
	<input type="text" id="urlCode">
    <input type="button" value="Convert" onClick="urlCode()">
</form>
<section>
	<p id="urlCodeResult"></p>
</section>
</body>
</html>

Gozar 03.08.2012 00:49

ps: И да, ты не понял того, что я тебе написал. Читай до полного осознания. Столько раз, сколько будет нужно. У тебя ошибка.

if(lastChar = '-' || '_')
//тут всегда lastChar будет присвоен - (дефис)

dmpol18 03.08.2012 00:50

Цитата:

Сообщение от Gozar (Сообщение 194163)
Если да кабы, во рту выросли грибы. Не различаешь равно(==) и присваивание (=).

о, теперь понятно)

учить буду конечно, просто код нужен сейчас...

Gozar 03.08.2012 00:53

Цитата:

Сообщение от dmpol18
о, теперь понятно)

Ты и || - или неправильно понимаешь ;)

Примеры ещё раз посмотри.

dmpol18 03.08.2012 00:58

Спасибо! заработало:)

а что с кнопками в форме? как клик с функцией совместить?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>URL</title>
<script type="text/javascript">
function urlCode()
{
	var urlCode = document.getElementById("urlCode").value;
	var urlCode = urlCode.replace(/\s/g,"_");
	var urlCode = urlCode.replace(/\./g,"-")
	var urlCode = urlCode.replace(/\,/g,"-");
	var urlCode = urlCode.replace(/[а-яА-Я]/g,"");
	var urlCodeResult = document.getElementById("urlCodeResult");
	urlCodeResult.style.textTransform = "lowercase";
	var lastChar = urlCode.charAt(urlCode.length - 1);
	if (urlCode)
	{
		var i = 1;
		while (i>0)
		{	
			if(lastChar == '-' || lastChar == '_')
				{
					urlCode = urlCode.substring(0,urlCode.length-1);
					lastChar = urlCode.charAt(urlCode.length - 1);
				}
			else 
			{
				i = 0
			}
		}
		urlCodeResult.appendChild(document.createTextNode(urlCode));	
	}
	else
	{
			urlCodeResult.appendChild(document.createTextNode('Пустое поле'));
	}
}
function reset()
	{	
		document.getElementById('urlCodeResult').innerHTML = "";
	}
</script>
</head>

<body>
<h2>URL</h2>
<form id="urlForm" onSubmit="urlCode()">
	<input type="text" id="urlCode">
    <input type="button" value="Convert" onClick="urlCode()"><a href="javascript:urlCode()">Convert</a><br>
    <input type="reset" value="Reset" onClick="reset()"> <a href="javascript:reset()">Reset</a>
</form>
<section>
	<p id="urlCodeResult"></p>
</section>
</body>
</html>

Gozar 03.08.2012 01:36

Цитата:

Сообщение от dmpol18
как клик с функцией совместить?

чтобы отменить переход по ссылке, нужно дописать return false; после urlCode();

<a href="" onclick="urlCode();return false;"></a>

dmpol18 03.08.2012 01:44

нет, есть форма
<form name="urlConvForm" id="urlForm" onSubmit="urlCode()">
	<input type="text" id="urlCode">
    <input type="button" value="Convert" onclick="urlCode()"><a href="urlCode()">Convert</a><br>
    <input type="reset" value="Reset" onclick="resetAll()"> <a href="reset()">Reset</a>
</form>

но при клике на кнопки функции не запускаются - смотрел примеры вроде написано правильно и пробовал разные варианты...

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

dmpol18 03.08.2012 01:45

Цитата:

Сообщение от Дзен-трансгуманист (Сообщение 194176)
dmpol18,
Когда снабжаете свои сообщения html-кодом, то по возможности меняйте тэг [html] на [html run], чтобы сделать его запускаемым - и чтобы остальные, глядя на него в действии, могли проще понять, какие там проблемы.

С кнопками все в порядке, а вот переменную urlCode следует назвать как-нибудь иначе, потому что ее имя конфликтует с именем функции. Или переименовать саму функцию.

сейчас попробую...

dmpol18 03.08.2012 01:49

Большое спасибо Дзен-трансгуманист и Gozar конечно!
все заработало!
кому интересно прикрепляю код...
еще идея возникла чтобы через минуту автоматически все очищалось,
сейчас с таймерами буду возиться...

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>URL</title>
<script type="text/javascript">
function urlCodeFunc()
{
	var urlCode = document.getElementById("urlCode").value;
	var urlCode = urlCode.replace(/\s/g,"_");
	var urlCode = urlCode.replace(/\./g,"-")
	var urlCode = urlCode.replace(/\,/g,"-");
	var urlCode = urlCode.replace(/[а-яА-Я]/g,"");
	var urlCodeResult = document.getElementById("urlCodeResult");
	urlCodeResult.style.textTransform = "lowercase";
	var lastChar = urlCode.charAt(urlCode.length - 1);
	var firstChar = urlCode.charAt(0);
	
	document.getElementById('urlCodeResult').innerHTML = "";
	if (urlCode)
	{
		var i = 1;
		while (i>0)
		{	
			if(lastChar == '-' || lastChar == '_')
				{
					urlCode = urlCode.substring(0,urlCode.length-1);
					lastChar = urlCode.charAt(urlCode.length - 1);
				}
			else 
			{
				i = 0
			}
		}
		i = 1;
		while (i>0)
		{	
			if(firstChar == '-' || firstChar == '_')
				{
					urlCode = urlCode.substring(1);
					firstChar = urlCode.charAt(0);
				}
			else 
			{
				i = 0
			}
		}
		urlCodeResult.appendChild(document.createTextNode(urlCode));	
	}
	else
	{
			urlCodeResult.appendChild(document.createTextNode('Пустое поле или неправильное значение'));
	}
	
	if (document.getElementById('autoClear').checked)
	{
		setTimeout('resetAll();', 8000);
	}
	if (document.getElementById('textFormClear').checked)
	{
		document.getElementById('urlCode').value = "";
	}
}
function resetAll()
	{	
		document.getElementById('urlCodeResult').innerHTML = "";
		document.getElementById('urlCode').value = "";
	}
</script>
</head>

<body>
<h2>Формирование URL-адреса</h2>
<form name="urlConvForm" id="urlForm" onSubmit="urlCodeResult()">
	<input type="text" id="urlCode">
    <input type="button" value="Convert" onclick="urlCodeFunc()"><br>
    <input type="reset" value="Очистить" onclick="resetAll()">
</form>
<fieldset>
<legend>Настройки</legend>
<form>
 <input type="checkbox" id="autoClear">Автоматически очищать форму<br>
    <input type="checkbox" id="textFormClear">Стирать изначальное значение при конвертации
</form>
</fieldset>
<section>
<h2>Результат:</h2>
	<p id="urlCodeResult"></p>
</section>
</body>
</html>

dmpol18 03.08.2012 02:18

Цитата:

Сообщение от Дзен-трансгуманист (Сообщение 194181)
<form name="urlConvForm" id="urlForm" onSubmit="urlCode()">
- вот здесь забыли исправить.

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

с копированием в буфер обмена я так понял лучше пока не связываться?

dmpol18 03.08.2012 02:47

Еще раз спасибо,
как говорится - на ошибках учатся...
ну и по учебникам конечно тоже:)


Часовой пояс GMT +3, время: 21:43.