Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 无法在此代码中获取此值_Javascript_Jquery_Foreach_This_Onchange - Fatal编程技术网

Javascript 无法在此代码中获取此值

Javascript 无法在此代码中获取此值,javascript,jquery,foreach,this,onchange,Javascript,Jquery,Foreach,This,Onchange,第一个问题:像这样附加onchange=(function())明智吗 选择show(value)是一个函数,用于获取的id并在另一个中显示数据 最后一个问题是,为什么在这种情况下我无法得到this.id的结果?创建这样的选项元素,第三个问题是在选项元素处不需要id,因为在选项上有val来识别它 <option class="selectS" id="0" value="JSONcall[0].show" onchange="selectShow(this.id)">Some

第一个问题:像这样附加
onchange=(function())
明智吗

选择show(value)
是一个函数,用于获取
的id并在另一个
中显示数据


最后一个问题是,为什么在这种情况下我无法得到
this.id
的结果?

创建这样的选项元素,第三个问题是在选项元素处不需要
id
,因为在
选项上有
val
来识别它

<option class="selectS" id="0" value="JSONcall[0].show" 
   onchange="selectShow(this.id)">Some Value</option>

像这样创建option元素,并且在option元素上不需要使用
id
,因为您在
option
上有
val
来识别它

<option class="selectS" id="0" value="JSONcall[0].show" 
   onchange="selectShow(this.id)">Some Value</option>

我以不同的方式修改了你的代码

  • 使用
    $.ajax()
    提取一些随机JSON数据并对其进行解析
  • 使用
    $.each(var,function(index,value){})
    在对象上迭代
  • 使用
    change()
    事件来记录
    text
    val
    id
其余部分可以在
append()
方法中修改

函数showData(){
$.ajax({
url:“https://www.json-generator.com/api/json/get/bHepFCoNmG?indent=2",
成功:功能(数据){
$.each(数据,(i,val)=>{
$(“#mySelect”).append(“”+val.name+“”);
});
}
});
}
//变更事件
$('#mySelect').change(function(){
console.log($(this.find(':selected').text());
console.log($(this.find(':selected').val());
console.log($(this.find(':selected').attr(“id”);
});
showData()

我以不同的方式重新编写了您的代码

  • 使用
    $.ajax()
    提取一些随机JSON数据并对其进行解析
  • 使用
    $.each(var,function(index,value){})
    在对象上迭代
  • 使用
    change()
    事件来记录
    text
    val
    id
其余部分可以在
append()
方法中修改

函数showData(){
$.ajax({
url:“https://www.json-generator.com/api/json/get/bHepFCoNmG?indent=2",
成功:功能(数据){
$.each(数据,(i,val)=>{
$(“#mySelect”).append(“”+val.name+“”);
});
}
});
}
//变更事件
$('#mySelect').change(function(){
console.log($(this.find(':selected').text());
console.log($(this.find(':selected').val());
console.log($(this.find(':selected').attr(“id”);
});
showData()

您必须将
onchange
触发器置于
选择上。我建议您在html属性中添加不带javascript的事件。您必须使用
value
而不是
id
来共享值

const obj={
渠道1:{
展示:{
id:“ch1”,
名称:“ch1”
}
},
渠道2:{
展示:{
标识:“#ch2”,
名称:“ch2”
}
}
};
函数showData(){
$。每个(对象、功能(键、值){
const tvShow=value.show;//对象[key]==value

$(“您必须将
onchange
触发器放在
select
上。我建议您在html属性中添加带有javascript no的事件。您必须使用
value
而不是
id
来共享值

const obj={
渠道1:{
展示:{
id:“ch1”,
名称:“ch1”
}
},
渠道2:{
展示:{
标识:“#ch2”,
名称:“ch2”
}
}
};
函数showData(){
$。每个(对象、功能(键、值){
const tvShow=value.show;//对象[key]==value

$(“您可能希望在select元素上使用onchange属性,并结合使用是否可以尝试对您有效的建议??您还可以使用
$('.someClass').data()
从元素中附加和检索数据,而不必将数据存储在多个位置。您可能希望在select元素上使用onchange属性,并结合使用对您有效的建议??您还可以使用
$('.someClass').data()
从元素中附加和检索数据,而不必将数据存储在多个位置。原因-1?@fupuchu-您期望的id valye是什么…?您能提供对象的结构吗?是的,它现在可以工作了,就像您所说的selectShow()不应该。原因是-1?@fupuchu-你期望的id valye是什么…?你能提供你的对象的结构吗?是的,它现在起作用了,就像你说的selectShow()应该被要求不要。该死的,这比我拥有的更整洁。该死的,这比我拥有的更整洁。@HorsObject,忽略编辑,我编辑错了帖子。Apologies@HorsSuject,忽略编辑,我编辑了错误的帖子。抱歉
$('<option>').val(key).text(tvShow.name).appendTo('#show-select');
<select onchange= "selectShow()"> </select>

function selectShow(){
  console.log($( "#show-select" ).val());
}