Javascript 如何确定跨度内有多少可见图像具有相同的;数据id“;属性具有相同的';longdesc';属性

Javascript 如何确定跨度内有多少可见图像具有相同的;数据id“;属性具有相同的';longdesc';属性,javascript,jquery,html,Javascript,Jquery,Html,我试图做到这样,当有人启用多个辅助电话时,他们会收到可能会收费的警报。它们可以有一个主设备和一个辅助设备 他们可以自己将手机设置为活动状态,当他们尝试激活多个辅助电话时,应向他们发出警报。如果他们试图禁用主电话,还应告知他们致电客户服务部。(该部件正在工作。) 从提供的代码中,您可以看到哪些部件正在工作。我在这里硬编码一些值作为示例。在示例代码中,我正在搜索1234的“longdesc”在可见图像中出现的次数 谁知道我做错了什么?或者,如果有更好的方法来搜索值1234在“次”跨度的可见图像中出现

我试图做到这样,当有人启用多个辅助电话时,他们会收到可能会收费的警报。它们可以有一个主设备和一个辅助设备

他们可以自己将手机设置为活动状态,当他们尝试激活多个辅助电话时,应向他们发出警报。如果他们试图禁用主电话,还应告知他们致电客户服务部。(该部件正在工作。)

从提供的代码中,您可以看到哪些部件正在工作。我在这里硬编码一些值作为示例。在示例代码中,我正在搜索1234的“longdesc”在可见图像中出现的次数

谁知道我做错了什么?或者,如果有更好的方法来搜索值1234在“次”跨度的可见图像中出现的次数


$(“.tog”)。单击(函数(){
var id=$(this.attr('id');
var option=$(this.attr('name');
如果(选项==“主”){
警报(“请致电客户服务以设置帐户上的主电话。”);
}
否则{
$('img',this.toggle();
if(search($(this).find('img').attr('longdesc'))>1)
document.getElementById('alert')。value=“选择了多个。”;
其他的
document.getElementById('alert')。value=“1或更少选中。”;
}
});
功能搜索(五){
var numfound=0;
var out=document.querySelectorAll('img[longdesc]'=v);
[]forEach.call(out,函数(x){
numfound++;
});
返回numfound;
}

主电话
第二部电话
第三部电话

ID不能重复。如果至少对其应用任何逻辑,则只考虑ID的第一次出现。尝试改用class

HTML:

<span>
 <img src="" class="class1" longdesc="123" /> 
 <img src="" class="class2" longdesc="123" /> 
 <img src="" class="class1" /> 
 <img src="" class="class1" /> 
 <img src="" class="class1" longdesc="123" /> 
</span>
var count = 0;

$(".class1").each(function( el) {
  if($(this).attr('longdesc'))
    count++;
});

我希望这有帮助!:)

如果有人在搜索,我发现jquery的多个选择器和其他一些有用的东西。首先,感谢爱迪生和斯科特的帮助

我最终使用的效果最好的是jquery中的几个“数据”元素和一个复杂的选择器语句。我们还决定不允许同时使用多个辅助电话,这使得答案有点不同,但现在一切都很好

以下是新片段:

$(“.tog”)。单击(函数(){
var id=$(this.attr('data-phone-id');
var option=$(this.attr('data-name');
var contactId=$(this.attr('data-contactId');
var el=这个;
var found=$([span[数据名称='“+选项+”][数据联系人id='“+联系人id+”]][数据电话id!=“+id+”]);
找到。每个(函数(){
var thisspan=此;
var image=$(“img[alt='on']:visible”,this);
image.each(函数(){
$('img',thisspan.toggle();
});
});
如果(选项==“主”){
警报(“请致电客户服务以设置帐户上的主电话。”);
}
否则{
$('img',el).toggle();
}
});

主电话
第二部电话
第三部电话

Id应该是唯一的。您没有正确使用
Id
属性。
id
值在页面中必须始终是唯一的-这就是
id
的要点。如果您希望使用另一种方法来识别和分组元素,请使用CSS类或
data-*
属性。您还错误地使用了
名称
属性,因为这仅对表单元素有效(
输入
选择
文本区域
,等等),而不是
span
。谢谢Scott,我不知道data-*属性+1碰巧我已经在使用类来切换图像。没问题。您可以使用不同的类名动态创建一个或多个类似的类。您可以编写任何需要的标记,因此可以重复使用
id
。但是,HTML在那一点上是无效的,所以现实地说,“不”,id
不能重复。你说得对。那是个打字错误。我写了“可以”而不是“不能”。对不起,谢谢你,爱迪生。添加第二个类可能会有所帮助。我仍然需要弄清楚如何只计算“可见”的图像数,即显示未设置为“无”的图像数。