javascript 参考错误:左侧无效分配

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13324930/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-26 18:26:41  来源:igfitidea点击:

ReferenceError: invalid assignment left-hand side

javascriptjqueryfullcalendar

提问by almix

What's wrong in the next code? It is inside $dialogContent.dialog

下一段代码有什么问题?它在 $dialogContent.dialog 里面

buttons: {
                       save : function() {

                          calEvent.start = new Date(startdateField+' '+starttimeField.val());  // 11/25/2012 15:00
                          calEvent.end = new Date(endField.val());  
                          if($('#script_all_stores_false').attr('checked')) { /*clearChildren(document.getElementById('days'));*/ frequency_as_dayField.val() = 99; }
                        // если не заполнено поле recurring_start, то заполнить его текущей датой начала события
                          if(recurring_startField.val()!='') calEvent.recurring_start = new Date(recurring_startField.val()); else calEvent.recurring_start = new Date(startdateField+' '+starttimeField.val());
                        // если не заполнено поле recurring_end, то заполнить его текущей датой + 1год (логика: уроки вряд ли держатся в расписании больше года, когда преподаватель определится до какого числа будут занятия с этой группой, он заполнит нужной датой)  
                          var startDate = new Date(startdateField+' '+starttimeField.val()); //calEvent.recurring_start;??
                            if(recurring_endField.val()!='') calEvent.recurring_end = new Date(recurring_endField.val());
                            else if(recurring_endField.val()=='' && $("#script_all_stores_true").is(":checked")/*&& recurring_startField.val()!=''*/) calEvent.recurring_end = new Date( startDate.setDate(startDate.getDate() + 365) );
                            calEvent.frequency_as_day = frequency_as_dayField.val();
var my_query_str = ''; 
                            $dialogContent.find("input[type='checkbox'][name='days']").each( function() { 
                                if(this.checked) { my_query_str += "&bookArray[]=" + 1; }
                                else { my_query_str += "&bookArray[]=" + 0; }
                            });

                          calEvent.days = my_query_str; 
                          calEvent.title = titleField.val();
                          calEvent.body = bodyField.val();
                          calEvent.teacher_id = teacherField.val();  
    ...

Firebug says:

萤火虫 说:

ReferenceError: invalid assignment left-hand side
[Break On This Error]   

...e').attr('checked')) { /*clearChildren(document.getElementById('days'));*/ frequ...

if I change frequency_as_dayField.val() = 99;to var frequency_as_dayField = 99;

如果我frequency_as_dayField.val() = 99;改为var frequency_as_dayField = 99;

firebug says:

firebug 说:

TypeError: frequency_as_dayField.val is not a function
[Break On This Error]   

calEvent.frequency_as_day = frequency_as_dayField.val();

I'm bad in javascript, sorry. Please, help(

我在 javascript 方面很差,对不起。请帮忙(

回答by I Hate Lazy

You need to pass a value to .val(), not assign a value to whatever is returned.

您需要将值传递给.val(),而不是为返回的任何值分配值。

if($('#script_all_stores_false').attr('checked')) {  
   /*clearChildren(document.getElementById('days'));*/ 
   frequency_as_dayField.val(99) /* = 99*/ ; 
         // good-------------^       ^-------------bad
}