是否可以将类传递给Javascipt函数?

时间:2019-08-17 00:36:58

标签: javascript css function

我当前正在将按钮上的ID传递给函数。 我想从使用按钮切换为在jQuery表中使用td(一旦我学会了如何操作)。 我想更改为使用类,因为我想使一行中的每个td都可单击。 行中的每个td都会将完全相同的变量传递给该函数。

因此,一行中的每个td都将与按钮完全相同。 这意味着我要使td可单击并调用该函数。 所有的td都将具有相同的ID(在上面的示例中是明确的),并且我读到不好的做法是多次使用相同的ID,并且稍后在我的jQuery代码中可能会出现问题。我确实读过,可以多次使用一个类,因此可以尝试进行更改。

例如,一个按钮的设置如下:

<input type="button" id="clear" style="width:110px;" onclick="return SetShift(this.id)" value="Clear" />

SetShift函数为:

function SetShift(id) {

    // Gets/passes the workday shift to/from the localStorage.
    const targetStateValue = localStorage.getItem('shiftstatus');

    if (targetStateValue === null) {
        localStorage.setItem('shiftstatus', id);
    } else {
        localStorage.setItem('shiftstatus', id);
    }
}

我试图将id更改为class,但是出现以下错误:

Uncaught SyntaxError: Unexpected token class

Uncaught ReferenceError: SetShift is not defined
at HTMLInputElement.onclick ((index):36)

2 个答案:

答案 0 :(得分:3)

如评论中所述,class是JavaSript中的保留名称(请参见this

您可以执行以下操作:

function SetShift(evt) {
	console.log('className', evt.target.className);
}
<button class="clear" onclick="SetShift(event)">
Click me
</button>

请注意,如果您有多个课程,则需要使用classList.contains

答案 1 :(得分:3)

  

是否可以将类传递给Javascipt函数?

是的,您可以使用className属性来做到这一点:

function setShift(className) {
  console.log(className);
}
<table>
  <tr>
    <td class="first" onclick="setShift(this.className)">First</td>
    <td class="second" onclick="setShift(this.className)">Second</td>
    <td class="third" onclick="setShift(this.className)">Third</td>
  </tr>
<table>