Javascript 如何设置多个div的样式并在单击时更改隐藏值?

Javascript 如何设置多个div的样式并在单击时更改隐藏值?,javascript,jquery,Javascript,Jquery,在我的网页上,我有一个多行的表格。每行包含相同的项目: -一个带有隐藏输入的标题 -一个功能类似“是”按钮的div -一个功能类似于no按钮的div 我试图实现的是,当用户单击“yes”按钮时,该DIV的样式将更改为“selected”,而“no”按钮的样式将被删除(设置为normal)。此外,隐藏输入的值需要设置为“是” 当用户单击“否按钮”时,与上述情况相同,只是这次相反(因此相反),隐藏的输入值将设置为“否” 我需要javascript找出相应的输入和DIV,以防止所有隐藏的输入都被设置,

在我的网页上,我有一个多行的表格。每行包含相同的项目: -一个带有隐藏输入的标题 -一个功能类似“是”按钮的div -一个功能类似于no按钮的div

我试图实现的是,当用户单击“yes”按钮时,该DIV的样式将更改为“selected”,而“no”按钮的样式将被删除(设置为normal)。此外,隐藏输入的值需要设置为“是”

当用户单击“否按钮”时,与上述情况相同,只是这次相反(因此相反),隐藏的输入值将设置为“否”

我需要javascript找出相应的输入和DIV,以防止所有隐藏的输入都被设置,所有DIV都被更改。Javascript需要找到最接近的DIV和输入

到目前为止,我所拥有的不会更改单击的DIV,但不会删除另一个DIV的类,也不会更改隐藏输入的值

<table width="100%">
            <tr>
                <td>
                    Intern
                    <input type="hidden" name="intern" class="inp-hid">
                </td>
                <td class="profielEditTD">
                    <table>
                    <tr>
                    <td>
                    <div class="YesBTN"></div>
                    </td>
                    <td>
                    yes
                    </td>
                    <td>
                    &nbsp;
                    </td>
                    <td>
                    <div class="NoBTN"></div>
                    </td>
                    <td>
                    no
                    </td>
                    </tr>
                    </table>
                </td>
            </tr>
        </table>

<script type="text/javascript">
$(document).ready(function(){
    $(".YesBTN").click(function(){
        $(this).closest(".YesBTN").toggleClass("YesYES");
        $(this).parent(".NoBTN").removeClass("NoYES");
        $(this).parent(".inp-hid").value = "yes"
    });

    $(".NoBTN").click(function(){
        $(this).closest(".NoBTN").toggleClass("NoYES");
        $(this).parent(".YesBTN").removeClass("YesYES");
        $(this).parent(".inp-hid").value = "no"
    });
});

</script>

实习生
对
不
$(文档).ready(函数(){
$(“.YesBTN”)。单击(函数(){
$(this).最近(“.YesBTN”).toggleClass(“yesys”);
$(this.parent(“.NoBTN”).removeClass(“NoYES”);
$(this).parent(“.inp hid”).value=“是”
});
$(“.NoBTN”)。单击(函数(){
$(this).closest(“.NoBTN”).toggleClass(“NoYES”);
$(this.parent(“.YesBTN”).removeClass(“yesys”);
$(this).parent(“.inp hid”).value=“否”
});
});

在事件处理程序中,
将引用已单击的元素;按钮。因此,没有理由在“YesBTN”处理程序中找到带有
.nestest()
的按钮作为
$(this)。nestest(.YesBTN”)
返回的结果将与
$(this)
完全相同

另一方面,查找相应的“否”按钮需要在DOM树中查找公共父级,然后在树中查找其他按钮:

$(this).closest(".profielEditTD").find(".NoBTN").removeClass("NoYES");
您的问题中的HTML并不完全清楚,但要找到输入字段,我认为您必须使用其名称:

$("input[name='intern']").val("yes");

例如。

您的选择器严重错误。您在为文本框赋值时遇到问题。谢谢,我已经发现它是错误的。关于如何修复值部分有什么建议吗?好的,那么addClass/removeCLass现在可以工作了,仍然是值问题remains@JeffreyvanZwam您是否仍在尝试为
.value
属性分配某些内容?那是行不通的;重新阅读答案。不,根据您的示例,尝试了多行。全无success@JeffreyvanZwam从您发布的内容来看,按钮和输入字段之间的关系尚不清楚。您使用的
.parent()
函数通常是错误的
.parent()
用于查找父元素,
元素永远不是父元素。好的,谢谢。我要试试别的。谢谢你帮我解决了我的一部分问题!