Следующий код должен сделать следующее:
Сначала создайте div class= words, а затем скрытую текстовую область с id txtarea и кнопку с классом btn2. Я хочу, чтобы это произошло:
Страница открывается абзацем в словах div, который будет исчезать, оставляя скрытую текстовую область и кнопку. Затем пользователь вводит текст в текстовое поле, нажимает кнопку, а текстовое поле и кнопка исчезают и заменяются словами div, теперь с текстом, введенным пользователем из текстового поля.
Все работает хорошо, пока абзац не исчезнет. Тогда я получаю текстовое поле со словом "undefined". Если я набираю текст и ударяю по botton, как и ожидалось, текстовое поле исчезает вместе с кнопкой, но остается "неопределенным". Обратите внимание, что настройка была включена, так как я продолжал получать javascript для начала до загрузки абзаца, хотя я думал, что функция $ document.ready должна была предотвратить это. Заранее спасибо.
<!DOCTYPE html>
<html>
<head>
<title> this is the title</title>
<style>
p {
font-family: "Times New Roman",TImes, serif;
}
pre{
white-space:pre-wrap;font-family: "Times New Roman",TImes, serif
}
.words {
position:absolute;width:auto;height:auto;top:260px;left:265px;right:225px;text-align:center;color:black;
font-size: 60px;
}
</style>
<script src="http://code.jquery.com/jquery-1.7.2.js"></script>
<script>
$(document).ready(function(){
setTimeout(function(){
$("p").fadeOut();
$("#newtext").fadeIn();
var area = document.getElementById("newtext");
str = area.value
$('.words').html("<pre>" + str + "</pre>")
$(".btn2").click(function(){
$("#newtext").fadeOut()
});
},5000);
});
</script>
</head>
<body>
<div class ="words">
<p> When this fades out, enter text.</p>
</div>
<div id="newtext" style="display:none" >
<textarea rows="50" cols="200" id = "txtArea" > </textarea>
<button class="btn2">SEE YOUR TEXT</button>
</div>
</body>
</html>
Почему вы смешиваете jQuery и non-jQuery? Не делайте этого:
var area = document.getElementById("newtext");
str = area.value
Сделай это:
var area = $('#newtext');
str = area.val();
Обратите внимание, что у вас отсутствовала точка с запятой в area.value
выше, что также, вероятно, не помогает. Вы также пропустили точку с запятой после $('.words').html("<pre>" + str + "</pre>")
.
Вы должны запустить JSLint в своем коде, чтобы выявить проблемы, такие как отсутствующие точки с запятой.
EDIT: ваша функция устанавливает содержание div с помощью words
класса в исходное значение текстового поля, которое пусто - поэтому ваш текст исчезает. Этот jsFiddle работает, основываясь на моем понимании того, что вы пытаетесь сделать.