كيف تبدأ سرادق مع JavaScript بناءً على إدخال المستخدم؟
-
20-09-2019 - |
سؤال
أحاول استخدام JavaScript لبدء سرادق عندما يضع المستخدم اسمه في مربع نص ثم ينقر على زر. لدي فكرة عن كيفية القيام بذلك ، لكن السيناريو الخاص بي لا يعمل بالكامل. أي مساعدة موضع تقدير!
هذا ما لدي حتى الآن:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function StartMarquee() {
var text = document.getElementById(namebox);
if (text != null) {
document.write("<marquee behavior='scroll' direction='right'>Hello " + text + "!</marquee>");
}
else {
alert("Enter your name first!!!");
}
}
</script>
</head>
<body>
<table style="margin:0px auto 0px auto;">
<tr><td>Enter your name!</td>
<td><input type="text" id="namebox"/></td>
<td><input type="button" value="Enter" onclick="StartMarquee()"/></td></tr>
</table>
</body>
</html>
المحلول
JavaScript الخاص بك لديه بعض المشاكل.
- أنت تمر متغيرًا غير محدد
namebox
لgetElementById
. تحتاج إلى وضع هذا في اقتباسات ('namebox'
). - تحتاج إلى التحقق من قيمة
text
ضد السلسلة الفارغة ، لاnull
. - تحتاج إلى استخدام قيمة الإدخال (
text.value
على عكس فقطtext
) في العنصر الذي تنشئه.
إليك ما سيبدو عليه رمزك مع هذه الإصلاحات:
function StartMarquee() {
var text = document.getElementById('namebox');
if (text.value !== '') {
document.write("<marquee behavior='scroll' direction='right'>Hello " + text.value + "!</marquee>");
}
else {
alert("Enter your name first!!!");
}
}
بعض الاقتراحات العامة الأخرى:
- لا تستخدم
document.write
. بدلاً من ذلك ، استخدم أساليب DOM لإنشاء عنصر جديد وإدخاله في DOM. - استخدام JavaScript غير مزعجة. قم بتوصيل سلوكك بعد تحميل المستند بدلاً من استخدام معالجات الأحداث المضمنة.
- يستخدم
===
و!==
للحصول على الظروف لتجنب إكراه نوع وضمان حصولك على النتيجة التي تعتقد أنك. - أبدا ، من أي وقت مضى
marquee
.
نصائح أخرى
var text = document.getElementById(namebox).value;
ربما لا تريد استخدامها document.write
لهذا- الاستخدام document.createElement('marquee')
لإنشاء العنصر ، ثم إضافته إلى جسم الصفحة. يمكنك تعيين سمات مثل الاتجاه على العنصر الذي تعود إليه ، وتعيينه innerHTML
إلى النص الذي تريده في السرادق.
(PS Marquee؟ حقا؟)
لا تنتمي إلى StackOverflow