سلام قبل از هر چیز میخواستم تشکر کنم از دوستانی که زحمت میکشن و پاسخ میدن
این لینک مربوط به کدهای من هست لطفا بگید چرا این خطا رو میده و میگه substring is not a function ؟
https://jsbin.com/comikapesa/edit?html,css,js,output
سلام
این خطا زمانی اتفاق میافته که شما فانکشن substring() استفاده میکنید که مقدارش string نیست شما قبل substring() فانکشنtoString() بزارید و خطا رفع میشه.
let originTextMatch = originText.toString().substring ( '0' , textEntered.length);ممنون از پاسخ تون🌹
امتحان کردم ولی بازم همون اتفاق افتاد و همون ایراد رو میگیره
شاید پاسخ شما همینجا باشد
چون originText بایستی از نوع رشته ای (string) باشه تا بتونید از این تابع استفاده کنید، در حالی که یک عنصر هستش و نه یک رشته.
https://www.w3schools.com/jsref/jsref_substring.asp
سلام ممنون از پاسختون 🌹
من ناوارد هستم و تازه دوره جاواسکریپت رو شروع کردم ، استادی که فیلم هاشون رو نگاه میکنم مثل من از این تابع استفاده کرد و مشکلی در اجرای برنامه نداشت ، نمیدونم چرا برای من اجرا نمیشه
از روش شما هم استفاده کردم خوب بود ولی باز قسمت زیر رو اجرا نمیکنه قسمتی که با صحیح تایپ کردن باید کادر به رنگ سبز در بیاد
`
if(textEntered==originText){
testWrapper.style.borderColor="green";
clearInterval(interval);`بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ
الْحَمْدُ لِلّٰه
سلام همون طور هم که اشاره شد، originText یک عنصر نمایشی (همون element داخل dom هست)
اون طور که من دیدم پروژه مورد نظر واسه سرعت آزمایی تایپ کردن هست...
خب یکی از چیزهایی که مد نظر هست اینه که اون متنی که کاربر می تایپه ( که برابر با textOrigin.innerText هست !) را بررسی میکنه اشتب کرده و درست تایپ کرده یا ....
خب پس اون textOrigin عنصره !
و برای دستیابی به متن عنصر نه خود عنصر باید از مشخصه ( property ) متنش که بهتره از innerText استفاده بشه :)
کد خروجی :
const theTimer = document.querySelector('.timer');
const testArea = document.querySelector(".text_input");
const originText = document.querySelector(".patern_origin");
const testWrapper = document.querySelector('.test_wrapper');
var timer=[0,0,0,0];
var timerRunning=false;
var interval;
function leadingTime(time){
if(time<=9){
time="0"+time;
}
return time;
}
function runTimer (){
let currentTime = leadingTime(timer[0])+":"+leadingTime(timer[1])+":"+leadingTime(timer[2]);
theTimer.innerHTML = currentTime;
timer[3]++;
timer[0]=Math.floor((timer[3]/100)/60);
timer[1]=Math.floor(timer[3]/100)-(timer[0]*60);
timer[2]=Math.floor(timer[3]-(timer[1]*100)-(timer[0]*6000));
}
function spellCheck(){
let textEntered=testArea.value;
// replace [textOrigin] to [textOrigin.innerHtml] as text content
// ! wrong let originTextMatch=originText.substring ( '0' , textEntered.length);
let originTextMatch=originText.innerText.substring ( '0' , textEntered.length);
// replace [textOrigin] to [textOrigin.innerHtml] as text content
// ! wrong if(textEntered==originText){
if(textEntered==originText.innerText){
testWrapper.style.borderColor="green";
clearInterval(interval);
}else{
if(textEntered==originTextMatch){
testWrapper.style.borderColor="yellow";
}else{
testWrapper.style.borderColor="red";
}
}
}
function start (){
let textEnteredLength = testArea.value.length;
if (textEnteredLength==0 && !timerRunning)
{
timerRunning=true;
interval = setInterval(runTimer,10);
}
}
testArea.addEventListener("keypress", start);
testArea.addEventListener("keyup", spellCheck);ممنون از لطفتون ، کامل و عالی 🙏