عندما يكون min مساويًا 0.2 والخطوة 0.5، تكون 0.7 خطوة كاملة بعد البداية، بخلاف 0.5. [1]
الخلاصة السريعة
- سجلت حالة A عدم تطابق عند 0.5، ولم تسجله عند 0.7.
- بقيت سمة value في B عند 0.2 حين تغيرت القيمة الحالية.
- أعطت C وD نتائج مختلفة رغم اشتراكهما في الخطوة 0.5.
- في E لم يظهر عدم تطابق خطوة؛ رفضت 0.1 بسبب الحد الأدنى.
- اختبرت F حذف سمة step، فأعطت نتيجة أخرى عند 0.7.
سم القاعدة قبل الحساب
القاعدة: min ثم سمة value ثم صفر. تبعد القيمة عددًا صحيحًا من الخطوات عنها. [1]
نبدأ بالحالة A: حد أدنى 0.2 وخطوة 0.5، دون سمة value. المسافة من 0.2 إلى 0.7 هي 0.5، أي خطوة كاملة. أما المسافة إلى 0.5 فهي 0.3؛ قسمتها على 0.5 تعطي ثلاثة أخماس خطوة. هذه المقارنة تستخدم القاعدة 0.2، لا الصفر. [2]
رسمنا سطرين للأعداد نفسها كي نرى الفرق. في السطر الأول توجد العلامات 0 ثم 0.5 ثم 1.0؛ وفي الثاني 0.2 ثم 0.7 ثم 1.2. الرقم 0.7 مرسوم في الموضع الأفقي نفسه في السطرين؛ الذي تحرك هو موضع العلامات المختارة.
اقرأ السجل من تجربة A
تعني stepMismatch الصحيحة مخالفة قيد الخطوة. [2]
نفذ الشيفرة في صفحة فارغة؛ تطبع القيمة ثم stepMismatch وrangeUnderflow وvalid، بهذا الترتيب. [1] [2]
شغلناها في Edge 155.0.4283.45. عند 0.2 و0.7 و1.2 كانت الأعلام الثلاثة: خطأ، خطأ، صحيح. وعند 0.5 كانت: صحيح، خطأ، خطأ. إذن لم نسجل نزولًا عن الحد الأدنى عند الرقم الذي فشل؛ موضع المخالفة في خانة أخرى.
استخدمنا تعيينًا برمجيًا للقيمة الحالية، ولم نكتب الأعداد بلوحة المفاتيح. لا يصف السجل طريقة إدخال فاصلة عشرية في لغة بعينها، ولا سلوك أزرار الزيادة والنقصان. ولم تحتو الصفحة على إرسال نموذج أو اتصال خارجي.
const field = document.createElement("input");
field.type = "number";
field.min = "0.2";
field.step = "0.5";
document.body.append(field);
for (const value of ["0.2", "0.5", "0.7", "1.2"]) {
field.value = value;
console.log(value,
field.validity.stepMismatch,
field.validity.rangeUnderflow,
field.validity.valid);
}بدل السمات مع إبقاء القيم
أنشأنا B من جديد دون min، وأعطينا سمة value الرقم 0.2 والخطوة 0.5. عند تعيين القيمة الحالية إلى 0.7 ثم 0.5 ثم 1.2، حصلنا على أعلام عدم التطابق: خطأ، صحيح، خطأ. قرأنا getAttribute("value") بعد كل تعيين، فبقي النص 0.2 في الحالات الثلاث.
في C حذفنا السمتين min وvalue، وأبقينا step عند 0.5. القيم نفسها أعطت: صحيح، خطأ، صحيح. هذا انعكاس لنتائج B في هذه الثلاثية؛ لذلك سجلنا السمات بجوار الأرقام، ولم نجمع مخرجات الصفحتين تحت عنوان «خطوة نصف».
في D جمعنا min عند 0.2 مع سمة value عند 0.4 وخطوة 0.5. قبل الفحص عيّنا القيمة الحالية مرة إلى 0.7 ومرة إلى 0.9. سجلت الأولى عدم تطابق خاطئًا والثانية صحيحًا؛ وبقي نص السمة 0.4. وجوده لم يحول النتيجة إلى المسار الذي يبدأ به في هذا الإعداد.
اختبر any وحذف الخطوة
القيمة any تزيل قيد الخطوة، وتبقى القيود الأخرى. [1]
في E احتفظنا بالحد 0.2 وجعلنا step تساوي any. أعطت 0.37 العلمين خطأ وخطأ، وصارت صالحة في تجربتنا. أعطت 0.1 خطأ وصحيح، وبقيت غير صالحة. لو اكتفينا بخانة الخطوة المتساوية لفقدنا الفرق بين هاتين القراءتين.
الخطوة الافتراضية للحقل العددي تساوي 1. [1]
في F أبقينا min عند 0.2 وحذفنا سمة step تمامًا. فشلت 0.7 في خانة الخطوة، ونجحت 1.2. المسافتان من بداية سطرنا هما 0.5 و1؛ الثانية وحدها تمثل خطوة كاملة في هذا الفحص. فصلنا F عن E في الرسم حتى لا نخلط الحذف بكلمة any.

أعد المقارنة بسجل كامل
لإعادة الضوابط، أنشئ حقلًا جديدًا لكل حالة وطبّق السمات المبينة في الجدول؛ ثم عيّن القيم واقرأ الأعلام نفسها. [1] [2]
الجدول يختصر ثماني قراءات من سجلنا ذي الست عشرة قراءة. تعني «نعم» أن العلم المحدد كان صحيحًا، ولا تعني أن الحقل صالح. اخترنا عمودي المخالفة بدل عمود نجاح واحد، لأن حالة E ذات 0.1 احتاجت العمود الثاني لشرح نتيجتها.
راجع أيضًا الفرق بين سمة value المكتوبة والقيمة الحالية التي عيّنتها الشيفرة. في B وD احتفظنا بالنص الأصلي للسمة إلى جانب كل قراءة؛ وهذه الخانة الصغيرة تمنع نسبة نتيجة إلى إعداد لم نستخدمه. الحساب الكسري هنا مراجعة مستقلة لأرقام المثال، وليس دالة تحقق عامة بباقي القسمة العشري في JavaScript.
| الحالة والسمات | القيمة الحالية | مخالفة الخطوة؟ | تحت الحد؟ |
|---|---|---|---|
| A: min=0.2, step=0.5 | 0.5 | نعم | لا |
| A: min=0.2, step=0.5 | 0.7 | لا | لا |
| B: value=0.2, step=0.5 | 0.7 | لا | لا |
| C: step=0.5 | 0.7 | نعم | لا |
| D: min=0.2, value=0.4, step=0.5 | 0.9 | نعم | لا |
| E: min=0.2, step=any | 0.1 | لا | نعم |
| F: min=0.2 | 0.7 | نعم | لا |
| F: min=0.2 | 1.2 | لا | لا |
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي وراجعته أدوات ذكاء اصطناعي. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
