【问题标题】:How to pass the class name of a clicked div as a parameter to a function如何将单击的 div 的类名作为参数传递给函数
【发布时间】:2014-11-08 04:46:25
【问题描述】:

这可能是基本的,但我在 JAVASCRIPT 中从我所做的研究中找不到我需要的结果。

有两个数字变量。它们是“mainnumber”和“buttonnumber” mainnumber 是从 math.random 生成的。 buttonnumber 是位于不同类名末尾的数字。 这意味着当单击的 div 具有类名 class='example1' 时 buttonnumber = 1 这意味着当单击的 div 具有类名 class='example2' 等时 buttonnumber = 2。

大约有 50 个 div 有自己的类名,例如 example1、example2 等。一些类名在 div 之间重复。

单击按钮时,会调用函数“compareaction”来比较“mainnumber”和“buttonnumber”并执行不同的函数 “结果正确”或“结果错误”取决于比较。

//这里是对比代码

function compareaction(buttonnumber){
    if (mainnumber == buttonnumber){
        resultcorrect();    
    } else {
        resultwrong();
    }
}

我需要知道如何将类名末尾的数字(即 1 或 2 或 3 或 4 等)传递给函数。

<div class="example1" onclick="compareaction(\\number in class name as a parameter)"></div>

【问题讨论】:

  • 你确定元素上只有 1 个类吗?如果没有,最好使用自定义 data- 属性而不是类名。

标签: javascript html function class parameters


【解决方案1】:

将类名传递给函数

<div class="example1" onclick="compareaction(this.className)">

然后在函数内部检查它

function compareaction(className) {
    // className will be 'example1' in this case
    var buttonNumber = className.match(/\d+$/)[0];
    if (mainnumber == buttonNumber){
        resultcorrect();    
    } else {
        resultwrong();
    }
}

【讨论】:

  • 感谢您的方法。但我需要比较类名的最后一个数字,否则只传递类名的最后一个数字。您解释的代码传递了名称“example1”,而我只需要传递“1”。
  • 更好地使用函数内部的类名,例如使用正则表达式:className.match(/\d+$/)[0]
  • 我建议不要为此使用类名,并使用数据属性在其中存储数据:&lt;div data-number="1" onlick="analyse"&gt; 并在分析函数中使用this.getAttribute('data-number')获取此属性
  • 抱歉打扰了,但请您解释一下 className.match(/\d+$/)[0] 我是 js 新手。 :)
  • 这意味着我们希望使用正则表达式 /\d+$/ 匹配类名末尾的一个或多个数字,它返回匹配标记的数组,在这种情况下 - 您正在寻找的数字: 示例 1 -> 1,示例 2 -> 2,示例 37 -> 37
猜你喜欢
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 2022-08-03
相关资源
最近更新 更多