2015-02-11 35 views
0

我已经重写这个问题作为原始的部分被求解,以一个简单的解决方案:在被调用的函数使用的对象引用(本)

我有一个动态创建的表,其中将有可能会超过100表单元格()那不会有ID的。当单击表格单元格时,onclick事件触发并执行条件检查以确定它是第一次单击2系列单击还是第二次单击。条件决定设置2个隐藏表单域的哪个值。

现在这里是简单的部分即时通讯尝试完成:onclick,如果它是第一次点击我想要的背景颜色的对象,触发该功能是颜色1否则,如果它是第二次点击那么它将是颜色2 。

代码:(JSFiddle Here)

CSS

#test tr td {text-align:center; border: thin black solid;} 

SCRIPT

<script> 
var x = 0; 
var click = 0; 
function res(zz) { 
if (click == 0) {document.getElementById('start').value=zz; click = 1;} else 
{document.getElementById('end').value=zz; click = 0;} 
} 
</script> 

HTML

<form action="" method="POST"> 
<input type="hidden" name="start" id="start" value=""> 
<input type="hidden" name="end" id="end" value=""> 
<input name="submit" type="submit" value="submit" />  
</form> 

<div id="starget"></div> 
    <div id="etarget"></div> 

    <table width="100%" id="test"> 
      <thead> 
      <tr> 
      <th>Tech</th><th>0800</th><th>0900</th><th>1000</th><th>1100</th><th>1200</th> 
      </tr> 
     </thead> 
     <tr> 
<td>Bill</td> 
<td>XXX</td> 
<td onclick="res(0900);"></td> 
<td>XXX</td> 
<td>XXX</td> 
<td onclick="res(1200);"></td> 
</tr> 
</table> 

这种变化的工作,如果我想的背景颜色第一次点击和第二次点击是相同的:

<td onclick="res(0900);this.style.backgroundColor='green';"></td> 

这下面然而不起作用,因为调用对象()传递的本身功能没有参考(this.style ....),但是其实这是我需要它来工作,因为我需要有条件的检查,以确定什么颜色设置背景的方式:

function res(zz) { 
    if (click == 0) {document.getElementById('start').value=zz; click = 1;this.style.backgroundColor='green';} else {document.getElementById('end').value=zz; click = 0;this.style.backgroundColor='red';} } 
+0

所以表的数据是从PHP /服务器端来了。我将有一个运行在页面加载的函数,使用Ajax调用PHP返回表数据,然后我会使用JavaScript来追加新的数据(动态)。您可以为每个呼叫设置偶数处理器,以便触发一个功能来设置定时器的启动/停止。在停止计时器内,您可以再次使用ajax提交该单元格的值以便保存新数据或插入新数据。 – NewToJS 2015-02-11 15:11:48

+0

@NewToJS我很抱歉,没有像秒表计时器那样开始/停止时间......我的意思是技术人员的调度员将分配一个时间块,这些时间可以随着他们分配给技术人员的每张新票而变化,例如一天计划。所以举个例子......一个新的管道呼叫“吉姆”可能被分配在1600Hrs开始,并在1800HR结束。 – DMSJax 2015-02-11 16:23:02

+0

你能给我举一个你的数据库表结构的例子吗?结构是否与此问题中显示的示例表相同? – NewToJS 2015-02-11 17:09:15

回答

1

您只需通过“本”的功能水库

小提琴在这里:

http://jsfiddle.net/sifriday/r3jaapj5/2/

HTML:

<td onclick="res(0900, this);"></td> 

通讯JS的调整:

function res(zz, el) { 
    if (click == 0) {document.getElementById('starget').innerHTML=zz; click = 1; el.style.backgroundColor='green';} else {document.getElementById('etarget').innerHTML=zz; click = 0;} 
} 
+0

谢谢!不知道你可以通过'this'作为变量 – DMSJax 2015-02-13 15:45:44

+0

是的,它确实是你在这里做的超级方便! – sifriday 2015-02-13 15:51:17