如何从区域href中激发JS函数

How to fire JS function from area href

本文关键字:JS 函数 href 区域      更新时间:2023-09-26

我有一张图片,上面有这样的链接图(用PHP生成):

        <map name="map_bc-03" id="map_bc-03">
          <area shape="circle" coords="166,28,12" href="#" onClick="changeCount('plus','bc-03');">
          <area shape="circle" coords="166,82,11" href="#" onClick="changeCount('minus','bc-03');"> 
        </map>

我正在尝试启动一个名为changeCount(type,product)的JS函数。

JS函数的目的是获取HTML元素(<span>)的当前值,并将其加1(x+1)。JS函数看起来像:

function changeCount(type,product)
{
    if ( type == "plus" )
    {
         $("#count_" + product).val() = $("count_" + product).val() + 1;
    }
}

问题是1/JS函数没有被触发,错误消息为"ReferenceError:changeCount未定义",我不明白为什么函数定义得那么清楚。。。。

问题编号2/JS函数本身会导致"ReferenceError:后缀操作中的左侧表达式无效"错误(即使未触发)。。。。

非常感谢您的帮助!

val()用于表单元素。对于<span>,您需要html()text()。试试这个

function changeCount(type,product){
    if ( type == "plus" ){
      $("#count_" + product).text(function(index, val){
        return parseInt(val)+1;
      });
    }
}

使用val(value);而不是val() = value;

重要的是,

如果您的目标选择器是输入或任何表单元素,则使用.val()。否则,如果它是divspan中的任何一个或任何其他非形式元素,则使用.text()而不是.val()。因为,非表单元素没有任何值。

根据您的问题,您的目标是<span>。所以,我认为你必须使用.text()

function changeCount(type,product)
{
  if ( type == "plus" )
    {
      $('#count_'+ product).text(Number($('#count_' + product).text()) + 1);
    }
 }

应该是

$("#count_" + product).val() = parseInt($("#count_" + product).val()) + 1;

获取值时缺少"#",应使用parseInt。