我想将div中的值切换为输入并提交。
到目前为止这是我的代码
HTML
<form id="forms" action="content.php" method="post">
<input id="foo" type="hidden" value"">
</form>
<div class="btn" value="1" width="40" height="40"></div>
<div class="btn" value="2" width="40" height="40"></div>
的Javascript
function $(v) {
return document.getElementById(v);
}
var btn = document.getElementsByClassName('btn');
for(i=0; i<btn.length; i++) {
btn[i].addEventListener('click', function() {
btn.getAttribute('value') = $('foo').value;
$('forms').submit();
}, false);
}
为什么它不起作用?无法点击? THX
答案 0 :(得分:0)
我认为你做错了。您需要将div按钮的值分配给隐藏的foo字段。此外,btn是所有按钮的数组,您可以使用 this 内部事件处理程序回调来引用被单击的按钮,因为此上下文绑定到具有附加事件的元素。我认为以下是你想要的:
(function() {
function $(v) {
return document.getElementById(v);
}
var btn = document.getElementsByClassName('btn');
for (var i = 0; i < btn.length; i++) {
btn[i].addEventListener('click', function() {
// assign what was clicked (this) to the foo hidden value
$('foo').value = this.getAttribute('value');
// now submit
$('forms').submit();
}, false);
}
}());
编辑:使用Array的forEach的示例(我假设您可以在执行环境中使用 getElementsByClassName 方法。
(function() {
function $(v) {
return document.getElementById(v);
}
var buttons = document.getElementsByClassName('btn');
// each element of the array is passed to the provided callback
buttons.forEach(function (button) {
button.addEventListener('click', function() {
// assign what was clicked (this) to the foo hidden value
$('foo').value = this.getAttribute('value');
// now submit
$('forms').submit();
}, false);
});
}());
答案 1 :(得分:0)
喜欢这样
function(argument)
你可以使用jquery来获取这样的属性:
<div id="div1" data-value="1"></div>
或
var div1 = $('#div1').data('value')
on click listeners with jquery
var div1 = $('#div1').attr('data-value');
答案 2 :(得分:0)
首先,我认为div
不应该有value
属性。也许你应该把它切换到data-value
,这可以在jQuery中轻松使用:
<form id="forms" action="content.php" method="post">
<input id="foo" type="hidden" value"">
</form>
<div class="btn" data-value="1" width="40" height="40"></div>
<div class="btn" data-value="2" width="40" height="40"></div>
至于javascript:
$('.btn').on('click', function() {
$(this).data('value', $('#foo').val());
$('#forms').submit();
});