onclick变量未传递给表单

时间:2017-07-25 17:56:22

标签: javascript php

我是Javascript的新手,从我读过的内容来看,我认为我的方法有一个更好的方法,但就在这里。

我有一个onclick表单,当在表格单元格中单击清晰图像时,单元格的背景图片会更改(显示已选中,或者如果再次单击则未选中)。一切正常,现在我想定义一些变量,以便在按下表单的“提交”按钮时,传递一个表单变量,显示用户是否选择了该选项。

我在互联网上找到的功能性JavaScript:

var curPic1 = 0;
window.onload=function() {
    document.getElementById('clear-kayangan').onclick=function() {
        curPic1 = (curPic1 == 0)? 1 : 0;
        document.getElementById('td_kayangan').style.backgroundImage = (curPic1 == 1)? 'url("pics/map-kayangan-lake-selected.png")' : 'url("pics/map-kayangan-lake.png")';
    }
}

我的计划是编写一个IF语句,说明curPic1 == 1(选择的背景图像是否显示用户已选择),我会创建一个全局变量,然后我可以将其传递给php: / p>

$spot1 = "<script>document.write(spot1);</script>";
if ($spot1 == 1) echo "<input name='spot1' type='hidden' value='1' />";

出于测试目的,我尝试了:

$spot1=$_POST['spot1'];
if ($spot1=="1") echo "<b>This really works</b><br>";

如果我使用If $spot1==0,它会起作用,我在javascript函数的顶部尝试了以下内容:

int spot1;
spot1=0;
var spot1=0;

在javascript函数本身中我尝试过:

int spot1 = 1;
spot1 = 1;
window.spot1 = 1;

我还没有尝试过IF语句,因为我只是试着测试它们是否正常工作。我读到我应该能够在函数内建立一个全局变量。我一次添加了一个以上的各种选项。它适用于spot=0,所以我假设问题是它没有被设置为函数中的全局变量?或许对这一切有更好的方法?

On提交隐藏的表单变量最终会传递到另一个页面并在那里使用。

2 个答案:

答案 0 :(得分:0)

在表单中声明隐藏变量,并在图像的onclick功能中将其值设置为0或1。提交表单时,此值也将传递给服务器

答案 1 :(得分:0)

正如@ santosh-sawant所说,你应该为隐藏的输入添加一个id,并在你已经拥有的同一个点击处理程序中更改值,例如:

<?php 
    $spot1 = $_POST['spot1']=='1' ? 1 : 0;
?>
<input name="spot1" id="spot1" type="hidden" value="<?=$spot1?>">

然后在你的JS中:

var curPic1 = 0;
window.onload = function() {
    document.getElementById('clear-kayangan').onclick = function() {
        curPic1 = (curPic1 == 0) ? 1 : 0;
        document.getElementById('td_kayangan').style.backgroundImage = curPic1 ? 'url("pics/map-kayangan-lake-selected.png")' : 'url("pics/map-kayangan-lake.png")';

        document.getElementById('spot1').value = curPic1;
    }
}