سلام قبل از هر چیز میخواستم تشکر کنم از دوستانی که زحمت میکشن و پاسخ میدن
این لینک مربوط به کدهای من هست لطفا بگید چرا این خطا رو میده و میگه substring is not a function ؟
https://jsbin.com/comikapesa/edit?html,css,js,output
سلام اینطور که من متوجه شدم قرار متن درون کادر با متن ورودی مقایسه بشه مشکل کدتون اینجاست که دارین یک المان رو مقایسه می کنید برای مقایسه محتوای یک المان باید از .textContent استفاده کنین شکل درست کد را براتون پایین ارسال کردم موفق باشید :)
سلام
این خطا زمانی اتفاق میافته که شما فانکشن substring() استفاده میکنید که مقدارش string نیست شما قبل substring() فانکشنtoString() بزارید و خطا رفع میشه.
let originTextMatch = originText.toString().substring ( '0' , textEntered.length);
چون originText بایستی از نوع رشته ای (string) باشه تا بتونید از این تابع استفاده کنید، در حالی که یک عنصر هستش و نه یک رشته.
https://www.w3schools.com/jsref/jsref_substring.asp
با سلام. روشی که استفاده کردین به شما object پاراگراف انتخاب شده رو برمیگردونه. به این صورت به متن داخل پاراگرافتون دسترسی دارید:
let originTextMatch=originText.innerHTML.substring ( '0' , textEntered.length);
سلام ممنون از پاسختون 🌹
من ناوارد هستم و تازه دوره جاواسکریپت رو شروع کردم ، استادی که فیلم هاشون رو نگاه میکنم مثل من از این تابع استفاده کرد و مشکلی در اجرای برنامه نداشت ، نمیدونم چرا برای من اجرا نمیشه
از روش شما هم استفاده کردم خوب بود ولی باز قسمت زیر رو اجرا نمیکنه قسمتی که با صحیح تایپ کردن باید کادر به رنگ سبز در بیاد
`
if(textEntered==originText){
testWrapper.style.borderColor="green";
clearInterval(interval);`
سلام اینطور که من متوجه شدم قرار متن درون کادر با متن ورودی مقایسه بشه مشکل کدتون اینجاست که دارین یک المان رو مقایسه می کنید برای مقایسه محتوای یک المان باید از .textContent استفاده کنین شکل درست کد را براتون پایین ارسال کردم موفق باشید :)
بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ
الْحَمْدُ لِلّٰه
سلام همون طور هم که اشاره شد، 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);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟