从无线电选择中查找标签img并应用于单独的img src

问题描述 投票:0回答:1

我正在寻找JavaScriptimg src获取selected input并将其应用于我在img src下创建的单独div的.selected-radio

我希望img src.selected-radio匹配selection和最初的checked

#radios {
	display: flex;
	padding: 20px;
}
#radios label,
.selected-radio {
	display: block;
	height: 38px;
	width: 38px;
	cursor: pointer;
	position: relative;
}
#radios label + label {
	margin-left: 25px;
}
input[type="radio"] {
	opacity: 0;
	position: absolute;
}
input[type="radio"] + span {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	color: #b3cefb;
	border-radius: 50%;
	padding: 5px;
	transition: all 0.4s;
	-webkit-transition: all 0.4s;
}
input[type="radio"]:checked + span {
	border: 2px solid #4285f4;
}
<div class="selected-radio"><img src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a985a90ec8f79000104514a_united-kingdom.svg">
</div>
<div class="container">
	<div id="radios">
		<label for="usa">
			<input type="radio" name="mode" id="usa" value="usa" checked/>
			<span><img src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a2f052996bde90001f96632_united-states-of-america.svg"><span>
		</label>
		<label for="canada">
			<input type="radio" name="mode" id="canada" value="canada" />
			<span><img src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a2cd7b0937442000184b147_canada.svg"><span>
		</label>
		<label for="uk">
			<input type="radio" name="mode" id="uk" value="uk" />
			<span><img src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a985a90ec8f79000104514a_united-kingdom.svg"><span>
		</label>
	</div>
</div>
javascript css html-form
1个回答
1
投票

你可以用javascript做到这一点。

我添加了一个函数changeImg,并在imgs上添加了一些id。

img的Id是特定的形式,以'img-'开头,以相关的radiobutton的值结束。

function changeImg(elm) {
  var val = elm.value;
  
  var img = document.getElementById('img-' + val);
  
  var src = img.src;
  
  var imgSelectedRadio = document.getElementById('img-selected-radio');
  
  imgSelectedRadio.src = src;
}
#radios {
	display: flex;
	padding: 20px;
}
#radios label,
.selected-radio {
	display: block;
	height: 38px;
	width: 38px;
	cursor: pointer;
	position: relative;
}
#radios label + label {
	margin-left: 25px;
}
input[type="radio"] {
	opacity: 0;
	position: absolute;
}
input[type="radio"] + span {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	color: #b3cefb;
	border-radius: 50%;
	padding: 5px;
	transition: all 0.4s;
	-webkit-transition: all 0.4s;
}
input[type="radio"]:checked + span {
	border: 2px solid #4285f4;
}
<div class="selected-radio"><img id="img-selected-radio" src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a985a90ec8f79000104514a_united-kingdom.svg">
</div>
<div class="container">
	<div id="radios">
		<label for="usa">
			<input type="radio" onchange="changeImg(this)" name="mode" id="usa" value="usa" checked/>
			<span><img id="img-usa" src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a2f052996bde90001f96632_united-states-of-america.svg"><span>
		</label>
		<label for="canada">
			<input type="radio" onchange="changeImg(this)"  name="mode" id="canada" value="canada" />
			<span><img id="img-canada" src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a2cd7b0937442000184b147_canada.svg"><span>
		</label>
		<label for="uk">
			<input type="radio" onchange="changeImg(this)"  name="mode" id="uk" value="uk" />
			<span><img id="img-uk" src="https://uploads-ssl.webflow.com/57e5747bd0ac813956df4e96/5a985a90ec8f79000104514a_united-kingdom.svg"><span>
		</label>
	</div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.