繁体   English   中英

Java语言边框颜色在单选按钮单击时未更改

[英]Javascript border colour not changing on radio button click

很抱歉提出一个问题,我相信很多人会认为这是非常基本的,但是我并不真正了解javascript,并且随着我的应用程序的发展,我正在学习

我有以下

在此处输入图片说明

当单击单选按钮时,我希望class="teams"的div将边框颜色更改为红色。

我想出了这段代码

<label><input type="radio" onclick="return border()" name="picks['.$x.']" id="one" value="'.$row['team1'].'"><span>'.$team1.'</span></label><br />
<label><input type="radio" onclick=" return border()" name="picks['.$x.']" id="two" value="'.$row['team2'].'"><span>'.$team2.'</span></label><br />
<label><input type="radio" onclick="return border()" name="picks['.$x.']" id="three" value="draw"><span>Draw</span></label><br />
</center>';

function border(){
    if(document.getElementById("one").checked){ 
        document.getElementById("teams").style.borderColor="red"
    }

    else if( document.getElementById("two").checked){
        document.getElementById("teams").style.borderColor="red"
    }
}

echo'<div class="teams">';
echo'<img src="images/teams/'.$src1.'.png" id="t1" />'; 
echo'<img src="images/teams/'.$src2.'.png" id="t2" />'; 
echo'</div>';

显然我做错了。 任何帮助将不胜感激

以下是引发的错误。

在此处输入图片说明

teams是类属性,而不是 ID。

getElementById("teams")更改为getElementsByClassName("teams")

请注意, getElementsByClassName("teams")返回匹配元素的数组; 因此,请使用循环设置每个值的值,或仅使用getElementsByClassName("teams")[0].style.borderColor


function border() {
    var el = document.getElementsByClassName("teams")[0];
    if (document.getElementById("one").checked || document.getElementById("two").checked) { 
        el.style.borderColor = "red";
        el.style.borderStyle = "solid";
    }
}

尝试onclick="border(this.id)"

 <labe><input type="radio" onclick="border(this.id)" name="picks['.$x.']" id="one" value="'.$row['team1'].'"><span>'.$team1.'</span></label><br />
 <label><input type="radio" onclick=" border(this.id)" name="picks['.$x.']" id="two" value="'.$row['team2'].'"><span>'.$team2.'</span></label><br />


function border(id){
    if(document.getElementById(id).checked){ 
        document.getElementsByClassName('teams')[0].style.borderColor="red"
        }
    }

工作演示

在您的代码teams是一个类名而不是id。

echo'<div class="teams">';

您可以将其更改为id:

echo'<div id="teams">';

或使用getElementsByClassName("teams") ,它将为您提供NodeList

document.getElementsByClassName("teams")[0].style.borderColor="red";

除此之外,您还可以仅使用css伪尝试此​​解决方案:

 input[type=radio].check { display: none; } input[type=radio].check + label.check { border: 1px solid grey; padding: 5px 7px; cursor: pointer; width: 150px; display: block; text-align: center; margin-bottom: 2px; } input[type=radio].check:checked + label.check { background: red; } 
 <input type='radio' name='team' value='Team 1' class='check' id='check1' /> <label for='check1' class='check'>Team 1</label> <input type='radio' name='team' value='Team2' class='check' id='check2' /> <label for='check2' class='check'>Team 2</label> <input type='radio' name='team' value='Draw' class='check' id='check3' /> <label for='check3' class='check'>Draw</label> 

只需提供一些提示,我就可以尝试避免使用onclick事件,而转向使用外部javascript。

我创建了一个您可以尝试的示例。

 $(':radio').change(function () { if ($(this).val() == "team1") { $(".row").css("border-color", "blue"); } else if ($(this).val() == "team2") { $(".row").css("border-color", "red"); } }); 
 div.row { border: 2px solid black; height: 200px; width:200px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div class="row"> </div> <label for="team1">1</label> <input id="team1" type="radio" name="team1" value="team1"> <label for="team2">2</label> <input id="team2" type="radio" name="team2" value="team2"> 

JavaScript 用于更换<div>按下按钮的颜色</div><div id="text_translate"><p>当我的 html 和 JS 代码在同一个文件中时,我有点不确定为什么我的代码似乎不起作用。 当 html 和 JS 分开时,似乎工作正常。 有人可以指出我的错误....我是新手!</p><p> <strong>HTML:</strong></p><pre> &lt;div class="main"&gt; &lt;div class="light"&gt;&lt;/div&gt; &lt;button onclick="chngCol()" id="burn"&gt;Burn!&lt;/button&gt; &lt;/div&gt;</pre><p> <strong>JavaScript:</strong></p><pre> chngCol() { if(document.getElementByClass('light').style.background == "#00ffff") { document.getElementByClass('light').style.background = "#ffff00"; } else if(document.getElementByClass('light').style.background == "ffff00") { document.getElementByClass('light').style.background = "#ff00ff"; } else if(document.getElementByClass('light').style.background == "#ff00ff") { document.getElementByClass('light').style.background = "#00ffff"; } }</pre><p> <strong>CSS:</strong></p><pre> .light{ width: 50px; height: 50px; background-color:#00ffff; }</pre><p> 所有代码都在同一个文档中,带有适当的标签,但是我在第一个 { 调用 chngCol.</p></div>

[英]JavaScript for changing a <div> colour from a button press

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用javascript更改文本框边框颜色 使用JavaScript更改输入边框颜色不起作用 Javascript:如果选中并提交,则更改单选按钮的颜色 使用 React 中的按钮单击更改 div 颜色样式 Javascript单选按钮组单击 javascript jquery单选按钮单击 Javascript颜色转换器只在第二次点击时改变颜色? JavaScript 用于更换<div>按下按钮的颜色</div><div id="text_translate"><p>当我的 html 和 JS 代码在同一个文件中时,我有点不确定为什么我的代码似乎不起作用。 当 html 和 JS 分开时,似乎工作正常。 有人可以指出我的错误....我是新手!</p><p> <strong>HTML:</strong></p><pre> &lt;div class="main"&gt; &lt;div class="light"&gt;&lt;/div&gt; &lt;button onclick="chngCol()" id="burn"&gt;Burn!&lt;/button&gt; &lt;/div&gt;</pre><p> <strong>JavaScript:</strong></p><pre> chngCol() { if(document.getElementByClass('light').style.background == "#00ffff") { document.getElementByClass('light').style.background = "#ffff00"; } else if(document.getElementByClass('light').style.background == "ffff00") { document.getElementByClass('light').style.background = "#ff00ff"; } else if(document.getElementByClass('light').style.background == "#ff00ff") { document.getElementByClass('light').style.background = "#00ffff"; } }</pre><p> <strong>CSS:</strong></p><pre> .light{ width: 50px; height: 50px; background-color:#00ffff; }</pre><p> 所有代码都在同一个文档中,带有适当的标签,但是我在第一个 { 调用 chngCol.</p></div> 在Java脚本无法通过for循环的情况下更改单选按钮的颜色 单选按钮的Java形式不更改
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM