كيف تبدأ سرادق مع JavaScript بناءً على إدخال المستخدم؟

StackOverflow https://stackoverflow.com/questions/2467049

  •  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 الخاص بك لديه بعض المشاكل.

  1. أنت تمر متغيرًا غير محدد namebox ل getElementById. تحتاج إلى وضع هذا في اقتباسات ('namebox').
  2. تحتاج إلى التحقق من قيمة text ضد السلسلة الفارغة ، لا null.
  3. تحتاج إلى استخدام قيمة الإدخال (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!!!");
  }
} 

بعض الاقتراحات العامة الأخرى:

  1. لا تستخدم document.write. بدلاً من ذلك ، استخدم أساليب DOM لإنشاء عنصر جديد وإدخاله في DOM.
  2. استخدام JavaScript غير مزعجة. قم بتوصيل سلوكك بعد تحميل المستند بدلاً من استخدام معالجات الأحداث المضمنة.
  3. يستخدم === و !== للحصول على الظروف لتجنب إكراه نوع وضمان حصولك على النتيجة التي تعتقد أنك.
  4. أبدا ، من أي وقت مضى marquee.

نصائح أخرى

var text = document.getElementById(namebox).value;

ربما لا تريد استخدامها document.write لهذا- الاستخدام document.createElement('marquee') لإنشاء العنصر ، ثم إضافته إلى جسم الصفحة. يمكنك تعيين سمات مثل الاتجاه على العنصر الذي تعود إليه ، وتعيينه innerHTML إلى النص الذي تريده في السرادق.

(PS Marquee؟ حقا؟)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top