Я нашел кучу других вопросов по этой теме, но по какой-то причине они не решили мою "проблему" .
У меня есть этот маленький сценарий, который я сделал из чистого интереса - и он работает просто отлично, но что-то беспокоит меня. Скрипт очищает текстовое поле onFocus и набирает «Write here», если ничего не вводится на Blur. Сценарий выглядит следующим образом:
<html>
<head>
<title>JavaScript</title>
<!--Scripts-->
<script type="text/javascript">
<!--
function noValue() {
var _value = document.getElementById('input').value;
if (_value == "Write here") {
document.getElementById('input').value='';
}
}
function changeValue() {
var _value = document.getElementById('input').value;
if (_value == "") {
document.getElementById('input').value='Write here';
}
}
function dontLeave() {
var c_box = confirm("Do you want to leave?");
if (c_box == true) {
die;
}
else {
history.back;
}
}
//-->
</script>
</head>
<body onUnload="dontLeave()">
<form>
<input id="input" type="text" value="Write here" onFocus="noValue()" onBlur="changeValue()">
</form>
</body>
</html>
Как видите, переменная _value используется дважды - в "noValue ()" и "changeValue ()". Это то, что я хочу изменить.
Я думал, что вы можете получить доступ к глобальной переменной внутри функции, не объявляя ее внутри функции fx:
var i = 1;
function foo(){
i++;
return;
}
и вывод будет 2, если вы вызовете функцию. Но когда я объявляю и инициализирую переменную вне функции, переменная не работает изнутри функций. Почему? Я что-то здесь неправильно понял? :)
У меня также есть другой вопрос:
Как вы можете видеть, я добавил окно подтверждения, когда вы покидаете страницу (я знаю, что это раздражает, я не собираюсь его использовать, это всего лишь эксперимент), но я не знаю, как не покинуть страницу, если клиент нажимает «Отмена». Как мне это сделать? :)
РЕДАКТИРОВАТЬ Первая часть моей проблемы теперь решена - спасибо!
Но есть все еще последняя часть о раздражающей коробке подтверждения; Кто-нибудь из вас знает, как остановить, так сказать, клиента?