دسته بندی ها
20:52 1398/08/03

دلیل خطای Identifier 'X' has already been declared در جی کویری چیست ؟

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : جاوا اسکریپت جی کوئری بوت استرپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4454
هوش مصنوعی

پاسخ هوش مصنوعی

خطای Uncaught SyntaxError: Identifier 'config1' has already been declared به این دلیل است که شما در حال تعریف متغیر config1 دوباره در جاوان اسکریپت هستید. هنگامی که شما فرم مودال را متعددی باز می کنید و کد اسکریپت اجرا می شود، جاوا اسکریپت نمی تواند متغیرهای با نام مشابه را دوباره تعریف کند.

برای حل این مشکل، می توانید از یک شرط استفاده کنید که بررسی کند آیا متغیر قبلاً تعریف شده است یا نه. مثلا می توانید اینطور اصلاح کنید:


            <script>
                if (typeof config1 === 'undefined') {
                    const config1 = {
                        filebrowserImageBrowseUrl: "/imagebrowser",
                        filebrowserImageWindowWidth: 780,
                        filebrowserImageWindowHeight: 720,
                        filebrowserBrowseUrl: "/linkbrowser",
                        filebrowserWindowWidth: 350,
                        filebrowserWindowHeight: 500
                    };
                }
                const editor1 = document.getElementById("myEditor");
                CKEDITOR.replace(editor1, config1);
            </script>

همچنین، مطمین شوید که کد مربوط به CKEDITOR.replace در هر بار که فرم را باز می کنید، فقط یک بار اجرا می شود. می توانید به سادگی این کد را در یک تابع قرار دهید و آن را صدا بزنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 21:03 1398/08/03

سلام

این خطا یک مقدار عجیب هست توی جاوا اسکریپت و جی کوئری. برای راهنمایی بیشتر در مورد این خطا می تونید این لینک رو مطالعه بفرمایید.

ولی برای رفع خطای مورد نظر در کدهای جاواسکریپت به جای کلمه کلیدی const از کلمه var استفاده کنید درست میشه. در واقع کدهای موجود در فرم مودال شما یا PartialView به شکل زیر میشه.

 

    <div class="form-group">
            <script src="~/ckeditor/ckeditor.js"></script>
            <div>
                <textarea asp-for="AnswerContent" id="myEditor" class="form-control simpleinput text-editor"></textarea>
                <span asp-validation-for="AnswerContent" class="text-danger"></span>
            </div>
            <script>
                //CKEDITOR.replace('Content');
                var config1 = {
                    filebrowserImageBrowseUrl: "/imagebrowser",
                    filebrowserImageWindowWidth: 780,
                    filebrowserImageWindowHeight: 720,
                    filebrowserBrowseUrl: "/linkbrowser",
                    filebrowserWindowWidth: 350,
                    filebrowserWindowHeight: 500
                };
                var editor1 = document.getElementById("myEditor");
                CKEDITOR.replace(editor1, config1);

            </script>
        </div>

 

موفق باشید

ویرایش شده در شنبه 4 آبان 1398 ساعت 02:17:23
به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود