Javascript 单击将类添加到表行

Javascript 单击将类添加到表行,javascript,html,Javascript,Html,我想在单击时向表行添加一个类: <tr class="gradeA " onclick="window.location.href='games/BG-1001.php'; obj.className='diagram-popup';" > $('.diagram popup').popupWindow({centerBrowser:1,高度:560,宽度:1024}); 我该怎么做?obj.className='diagram-popup'语法似乎有误。要具体回答您的问

我想在单击时向表行添加一个类:

<tr class="gradeA " onclick="window.location.href='games/BG-1001.php'; obj.className='diagram-popup';" >


$('.diagram popup').popupWindow({centerBrowser:1,高度:560,宽度:1024});

我该怎么做?
obj.className='diagram-popup'语法似乎有误。

要具体回答您的问题,请在该上下文中使用

<table>
    <tr onclick="this.className='test';alert(this.className);">
        <td>Click me (I will replace the className)</td>
    </tr>
    <tr onclick="this.className+=' test';alert(this.className);">
        <td>Click me to add (I will add to the className, click more than once)</td>
    </tr>
    <tr class="test">
        <td>Click me for jQuery handler (I will only add classes once when clicked more than once)</td>
    </tr>
</table>

$('.test').click(function(){
    $(this).addClass('test'); // Note, will not add the same class more than once
    alert(this.className);
});

要具体回答您的问题,请在该上下文中使用
this

<table>
    <tr onclick="this.className='test';alert(this.className);">
        <td>Click me (I will replace the className)</td>
    </tr>
    <tr onclick="this.className+=' test';alert(this.className);">
        <td>Click me to add (I will add to the className, click more than once)</td>
    </tr>
    <tr class="test">
        <td>Click me for jQuery handler (I will only add classes once when clicked more than once)</td>
    </tr>
</table>

$('.test').click(function(){
    $(this).addClass('test'); // Note, will not add the same class more than once
    alert(this.className);
});

为什么要使用这么多的并发症

使用jQuery提供了一个关键字
this

你可以这样使用它:

<tr class="add">Some thing</tr>

为什么要使用这么多的并发症

使用jQuery提供了一个关键字
this

你可以这样使用它:

<tr class="add">Some thing</tr>

通过利用和(管理事件处理),您可以非常轻松地做到这一点。您需要注意
handleClick
在下面的代码中是如何工作的(大多数其他代码只是演示如何使用Web API设置表,而不是编写HTML)-注释是非常有解释性的,但如果您有进一步的问题,请使用lmk:

//对我们的表DOM元素的引用
const tablel=document.querySelector(“#tablel”);
//要添加到单击行的样式类
const cls=“foo”;
//函数生成要添加到表中的单个tr元素
const generateTrEl=i=>{
const trEl=document.createElement('tr');//创建一个tr
const tdEl=document.createElement('td');//创建一个td以进入tr
trEl.setAttribute('class','gradeA');//添加指定的属性
tdEl.setAttribute('colspan','1');//设置colspan以拉伸整个表
tdEl.insertAdjacentText('afterbegin',i);//在td中插入文本
trEl.insertAdjacentElement('beforeend',tdEl);//在tr中插入td
返回树;
};
//利用事件委派的事件处理函数(因此我们不必在代码中管理多个Listner)
常量handleClick=e=>{
如果(e.target.tagName=='TD'){
e、 target.classList.add(cls);
}
};
//设置用于测试功能的表
常量init=()=>{
对于(设i=0;i<10;i+=1){
表1.附录(生成表(一));
}
表1.addEventListener('click',handleClick);
};
init()
.foo{
背景颜色:黄色;
}

通过利用和(管理事件处理),您可以非常轻松地做到这一点。您需要注意
handleClick
在下面的代码中是如何工作的(大多数其他代码只是演示如何使用Web API设置表,而不是编写HTML)-注释是非常有解释性的,但如果您有进一步的问题,请使用lmk:

//对我们的表DOM元素的引用
const tablel=document.querySelector(“#tablel”);
//要添加到单击行的样式类
const cls=“foo”;
//函数生成要添加到表中的单个tr元素
const generateTrEl=i=>{
const trEl=document.createElement('tr');//创建一个tr
const tdEl=document.createElement('td');//创建一个td以进入tr
trEl.setAttribute('class','gradeA');//添加指定的属性
tdEl.setAttribute('colspan','1');//设置colspan以拉伸整个表
tdEl.insertAdjacentText('afterbegin',i);//在td中插入文本
trEl.insertAdjacentElement('beforeend',tdEl);//在tr中插入td
返回树;
};
//利用事件委派的事件处理函数(因此我们不必在代码中管理多个Listner)
常量handleClick=e=>{
如果(e.target.tagName=='TD'){
e、 target.classList.add(cls);
}
};
//设置用于测试功能的表
常量init=()=>{
对于(设i=0;i<10;i+=1){
表1.附录(生成表(一));
}
表1.addEventListener('click',handleClick);
};
init()
.foo{
背景颜色:黄色;
}

您将在该上下文中使用
this.className
。您实际上并不是在添加它,而是在替换以前的问题。另外,不要忘记回顾过去的问题,并在可能的情况下通过单击答案旁边的复选标记选择适当的答案。您可以在该上下文中使用
this.className
。实际上,您并没有添加它,而是替换了以前的内容。另外,不要忘记回顾过去的问题,并在可能的情况下通过单击答案旁边的复选标记选择适当的答案。我会这样做,但它会破坏dataTables.js jquery插件。我需要在标签中设置URL。是否正确:$('.gradeA')。单击(函数(){$(this).popupWindow({centerBrowser:1,高度:560,宽度:1024});});你会怎么做?不要使用jQuery处理程序?问题的第一部分具体回答了您的问题。您是否在
TR
标记中添加了
SCRIPT
标记?是的,这在我看来是正确的,尽管我不确定你在问什么。是的,我是。这是将URL放入TR标记中的唯一方法。因此,当您单击该行时,您希望浏览器转到另一个
href
popupWindow
如何适应?我会这么做,但它破坏了dataTables.js jquery插件。我需要在标签中设置URL。是否正确:$('.gradeA')。单击(函数(){$(this).popupWindow({centerBrowser:1,高度:560,宽度:1024});});你会怎么做?不要使用jQuery处理程序?问题的第一部分具体回答了您的问题。您是否在
TR
标记中添加了
SCRIPT
标记?是的,这在我看来是正确的,尽管我不确定你在问什么。是的,我是。这是将URL放入TR标记中的唯一方法。因此,当您单击该行时,您希望浏览器转到另一个
href
popupWindow
如何适应?仍然损坏数据表$('.diagram popup').popupWindow({centerBrowser:1,高度:560,宽度:1024})$('.add')。单击(function(){$(this).addClass('diagram-popup');})和
$('.add').click(function() {
$(this).addClass('addedclass');
})