javascript中似乎不存在循环引用错误

时间:2018-12-10 07:55:17

标签: javascript jquery circular-reference

这个时候我已经挠了一下头。不知道。

我有一个返回javascript对象的函数,准备将其传递给JSON.stringify函数。当我这样做时,出现循环引用错误。看来'callWidget'方法返回的是我不想要的匿名函数。我只是看不到错误。

function putAnswersTogether() {
    var answers = [];

    $(".addedquestion").each(function(i, e) {

      var answerJSON = {qname: $(e).find(".questionname").val(),
          answerid: $(e).attr("answerid"),
          answer: callWidget($(e), "getResponse", "")};

      answers.push(answerJSON);
    });

    return answers;
  }
  
function callWidget(questioncontroldiv, method, value) {
	var divtype = $(questioncontroldiv).attr('id');
	var result;
	switch(divtype) {
	case "mogrify-multiplechoice":
		result = $(questioncontroldiv).multiplechoice(method, value);
		break;
	case "mogrify-checkbox":
		result =  $(questioncontroldiv).checkbox(method, value);
		break;
	}
	return result;
}

// The following methods are contained within widgets for multiplechoice and checkbox

_getResponseJSON: function() {
    var qname = this._getQuestionName();
	var answers = [];
			
    this.options.questioncontrol.find(
      "input[name='optradio-" +
      qname +
      "']:checked"
    ).each(function(i,e) {
        answers.push($(e).val());
    });
    
    return answers;
  },

_getResponseJSON: function() {
    qname = this._getQuestionName();
    var answer = this.options.questioncontrol
        .find("input[name='optradio-" + qname + "']:checked")
        .val();
			
	return answer;		
},

1 个答案:

答案 0 :(得分:0)

您已经将jQuery对象从函数 putAnswersTogether 传递给 callWidget

answer: callWidget($(e), "getResponse", "")

因此从 callWiget 功能

中删除jQuery标签。
var divtype = $(questioncontroldiv).attr('id');