Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试将变量分配给JS对象_Javascript_Jquery - Fatal编程技术网

Javascript 尝试将变量分配给JS对象

Javascript 尝试将变量分配给JS对象,javascript,jquery,Javascript,Jquery,我对JS世界很陌生。我所做的是,创建了一个表单,在这个表单中,我将表单字段值拉入变量并将它们分配给一个对象(obj),再次将“obj”对象分配给“param”对象,console.log(param)给了我未定义的值。任何帮助都将不胜感激 姓名和电子邮件 名字* 名字 姓* 姓 电子邮件地址* email@email.com 函数用户预处理数据(){ var名字; var LastName; var电子邮件; var param={}; var obj={}; $(“#edit-field-

我对JS世界很陌生。我所做的是,创建了一个表单,在这个表单中,我将表单字段值拉入变量并将它们分配给一个对象(obj),再次将“obj”对象分配给“param”对象,console.log(param)给了我未定义的值。任何帮助都将不胜感激


姓名和电子邮件
名字*
名字
姓*
姓
电子邮件地址*
email@email.com
函数用户预处理数据(){
var名字;
var LastName;
var电子邮件;
var param={};
var obj={};
$(“#edit-field-first-name-und-0-value”).focusout(函数(){
FirstName=this.value;
console.log(名字)
});
$(“#edit-field-last-name-und-0-value”).focusout(函数(){
LastName=this.value;
});
$(“#编辑邮件”).focusout(函数(){
email=this.value;
});
obj.frstnam=名字;
obj.lstnam=姓氏;
obj.eml=电子邮件;
param.param=obj;
控制台日志(param);
}
$(“输入#编辑提交ca”)。在('click',函数(事件){
//警报(“hi”)
用户预处理数据();
返回false;
});
});

您可以访问
focusout
事件上的值,甚至您在提交页面上绑定了该事件处理程序,这是一种糟糕的做法。通常,所有事件处理程序都必须在开始时绑定。检查下面的解决方案

function user_pref_data(){
  var param={};
  var obj = {};
  var FirstName;
  var LastName;
  var email;

  FirstName = $("#edit-field-first-name-und-0-value").val();
  LastName = $("#edit-field-last-name-und-0-value").val();
  email = $("#edit-mail").val();

   obj.frstnam = FirstName;
   obj.lstnam = LastName;
   obj.eml = email;
   param.param = obj;
   console.log(param);
}
这是你的电话号码

在代码中做了一些更改。加上这个。 不能在另一个函数中定义focusout事件函数以使其发生


由于您的函数
user\u pref\u data()
仅在提交操作时被调用,因此这些focusout事件从未发生。

是否要在
focusout
上获取表单字段的值

试试这个:

var FirstName;
  var LastName;
  var email;  
$("#edit-field-first-name-und-0-value").focusout(function(){
       FirstName = this.value;
       console.log(FirstName);
    });
  $("#edit-field-last-name-und-0-value").focusout(function(){
      LastName = this.value;
    });
  $("#edit-mail").focusout(function(){
      email = this.value;
    });

function user_pref_data(){
  var param={};
  var obj = {};  

   obj.frstnam = FirstName;
   obj.lstnam = LastName;
   obj.eml = email;
   param.param = obj;
   console.log(param);
}
$("input#edit-submit-ca").on('click', function(event){
  //alert("hi")

  user_pref_data();
  return false;

});

当某个元素或其中的任何元素失去焦点时,Jquery事件被发送到该元素


因为,在代码中,当函数
user\u pref\u data()
正在执行时,您绑定了.focusout()事件,而此时未触发foucs out事件

非常奇怪,但我已将
$(“#id”)
更改为
document.getElementById()
。 更改此行:

$("#edit-field-first-name-und-0-value").focusout(function(){
      FirstName = this.value;
    });
为此:

FirstName = document.getElementById("edit-field-first-name-und-0-value").value;
也许你忘了包括jQuery库?
哦,我看到您确实包含了它们。

Rashim Javiya的示例非常完美,但要补充一点,您的代码不起作用的原因是javascript基于事件循环。函数user_pref_data()在调用已传递的焦点输出事件的提交事件上被调用(就我个人而言,我不会获取聚焦输出事件的输入数据——请参考上面的Rashims代码,但下面是一个相同//的示例,只需很少修改//代码即可工作,因为我初始化了您的函数,而没有将其附加到事件

(function user_data_function() {
var param;
var obj = {};
var FirstName;
var LastName;
var email;

$("#edit-field-first-name-und-0-value").focusout(function(){
   FirstName = this.value;
   console.log(FirstName);
});
$("#edit-field-last-name-und-0-value").focusout(function(){
  LastName = this.value;
});
$("#edit-mail").focusout(function(){
  email = this.value;
});


$("input#edit-submit-ca").on('click', function(event){
//alert("hi")

obj.frstnam = FirstName;
obj.lstnam = LastName;
obj.eml = email;
param = $.param( obj );
console.log(param);
event.preventDefault(); // works same as 'return false' in your code but this is best practice

});
})(); // initilize and call function at same time

同样不是我写这段代码的方式,但出于演示目的,我希望这能澄清事件循环如何与javascript一起工作,欢迎来到StackOverflow。问题需要提供足够的细节和问题描述,以便我们帮助您解决问题。在这种情况下,您可以在这里发布相关代码吗提问并突出问题所在的部分。您好,我也添加了链接。@scrowler是对的。您可以阅读更多关于如何不只是链接到ok中的其他页面的内容。我会记住。我将尝试添加有关问题的更多详细信息,我将在下一个问题中面对。顺便说一句,我也包含了代码。谢谢您非常感谢大家…:)它成功了。。。
FirstName = document.getElementById("edit-field-first-name-und-0-value").value;
(function user_data_function() {
var param;
var obj = {};
var FirstName;
var LastName;
var email;

$("#edit-field-first-name-und-0-value").focusout(function(){
   FirstName = this.value;
   console.log(FirstName);
});
$("#edit-field-last-name-und-0-value").focusout(function(){
  LastName = this.value;
});
$("#edit-mail").focusout(function(){
  email = this.value;
});


$("input#edit-submit-ca").on('click', function(event){
//alert("hi")

obj.frstnam = FirstName;
obj.lstnam = LastName;
obj.eml = email;
param = $.param( obj );
console.log(param);
event.preventDefault(); // works same as 'return false' in your code but this is best practice

});
})(); // initilize and call function at same time