تناوب محتوى جافا سكريبت على أساس النسبة المئوية

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا بحاجة إلى أن تكون قادرة على تدوير المحتوى داخل شعبة نائبا على أساس نسبة مئوية من هذا القبيل. سيحدث تناوب على تحميل الصفحة. لذلك كل مرة يقوم فيها المستخدم تعيد تحميل صفحة لديه هذه الفرص من رؤية المحتوى 1 أو 2 أو 3 في العنصر النائب المحتوى:

تظهر

والمحتوى 1 = 50٪ من الوقت
تظهر المحتوى 2 = 25٪ من الوقت
وتبين محتوى 3 = 25٪ من الوقت

وأنا أفضل جافا سكريبت ولكن إذا كان هناك طريقة أسهل للقيام بذلك في ASP.NET على القالب الواجهة الأمامية ليس codebehind، وهذا هو أيضا مقبولة. إذا كان لديك حل أو يمكن لي نقطة إلى برنامج نصي موجود أود أن نقدر ذلك. شكرا!

هل كانت مفيدة؟

المحلول

وليس هناك حقا لا حاجة لمضاعفة / الكلمة / سقف أي شيء: وظيفة Math.random() يعطي القيمة التي هي أكبر من أو يساوي 0 وأقل من 1

والتعليمة البرمجية التالية سيكون أسهل قليلا للحفاظ على حالة تغيير عدد من الخيارات أو النسبة المئوية فرصة.

var contentId, random = Math.random();

if (random < 0.5) {
  // option 1: chance 0.0–0.499...
  contentId = 0;
} else (random < 0.75) {
  // option 2: chance 0.50—0.7499...
  contentId = 1;
} else {
  // option 3: chance 0.75–0.99...
  contentId = 2;
}

loadContent(contentId);

نصائح أخرى

وبالنسبة للجزء عشوائي من السيناريو، لديك فقط للعب مع Math.random سيكون شيء قبيح وضمني بهذا الشكل:

var contentToShow = -1;
var NB_MAX = 4;
var myRand = Math.floor(Math.random()*NB_MAX);
if(myRand<1) contentToShow = 1;
else if (myRand<2) contentToShow = 2;
else contentToShow = 3;

وبعد ذلك عليك أن تحميل المحتوى مع اياكس.

وهناك exemple في مسج يمكن أن تبدو مثل:

var myPlaceHolder = $("#myPlaceHolder")
$.myPlaceHolder.load("/mycontents/mycontent_" + contentToShow + ".asp");

ولكن استخدام طلب اياكس على تحميل الصفحة ليس وسيلة للذهاب المنظمة البحرية الدولية. (2 طلب الملقم بدلا من 1 في حالة التعامل مع محتوى عشوائي من قبل الملقم)

وهنا هو الإختراق السريع، وربما كان هناك طريقة أفضل.

var randomnumber=Math.floor(Math.random()*4)
if((num==0) || (num==1)) {
//show hidden div or document.write (50% probability)
} else if (num==2) {
//show hidden div or document.write (25% probability)
} else {
//show hidden div or document.write (25% probability)
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top