php - 如果选中了复选框,则为 javascript topage2,如果为 atpage2: 在未选中的情况下保持topage1选中?

  显示原文与译文双语对照的内容

我完全是javascript新手,我没有线索,如何让这个工作。 我修改了代码一点,但是请注意,第 6行没有意义。 这就是这篇文章的主要原因。


<script>
function checkReloading() {
 if (window.location.href.split=="?showpastdate") {
 document.getElementById("showpastdate").checked=true;
 } else {
 document.getElementById("showpastdate").checked=false;
 }
}

function toggleAutoRefresh(cb) {
 if (cb.checked) {
 window.location.replace("?showpastdate");
 } else {
 window.location.replace("");
 }
}
window.onload=checkReloading;
</script>

好吧,我觉得这很容易理解。

首先 window.location.href.split 不能工作,因为我必须给出完整的路径。 但如何使这个动态,所以它可以在更多的网站上使用? 我看到的一切 window.location.protocol +"//" + window.location.host +"/" + window.location.pathname; 但是,如何实现动态网页的这一行代码? 谁能给我一个例子?

我想用这个代码来实现的是:
当showpastdate被选中时,href到 ?showpastdate,当 ?showpastdate 处于状态时,我可以在 ?showpastdate 上使用 php $_GET 。 这是( 当我使用 static 完整网址时) 。 但是。

如何修改这里代码,以便复选框保持在 ?showpastdate 中,直到再次单击,重复到原始. php 状态。

抱歉,请求编写代码,但我打赌在 2分钟内,我可以在小时内编写这条简单的线路。 我现在不打算学习 javascript,但这确实是一个不错的选项,可以让程序切换显示过去日期,nicer,nicer,off,1,,EDIT,EDIT + a 提交按钮 @(O _o ) @

预先 Thanx 。

时间: 原作者:

.split() 是一个可以在字符串对象上执行的函数,可以根据提供的参数将它的分块:
"abcdefg|hijklmnop|qrstuvw".split('|')
将导致如下所示的array:
["abcdefg","hijklmnop","qrstuvw"]

现在,我猜测你已经为url添加了一个"showpastdate"参数,以更改"选中复选框"状态。 最简单的方法是:


document.getElementById("showpastdate").checked = (~window.location.href.indexOf("?showpastdate"))

这里部分: window.location.href.indexOf("?showpastdate") 在href中搜索
"?showpastdate"
如果找到了字符串,它将返回索引。 如果没有,它将返回 -1. 它前面的弯曲是将 -1或者 0 ( 或者更高) 转换为 true/false.

我不太确定 toggleAutoRefresh() 应该做什么

编辑 1

啊,对于 toggleAutoRefresh(),只需添加:


if (cb.checked) {
 window.location.href.replace("?showpastdate","");
}

你没有那个 if-else block 。 .replace() 函数的作用方式与 .split() 相同。 它需要 2个参数:要查找什么,以及用什么替换它。 所以,例如:


var someString ="words and stuff"
var result = someString.replace("","_");
//result will be"words_and_stuff"

编辑 2

这些函数应该工作:


function checkReloading() {
 document.getElementById("showpastdate").checked = (~window.location.href.indexOf("?showpastdate"))
}

function toggleAutoRefresh(cb) {
 if (cb.checked) {
 window.location.href.replace("?showpastdate","");
 }else{
 window.location.href +="?showpastdate";
 }
}

你从哪里调用 toggleAutoRefresh()?

编辑 3

我可以从你最后一个评论中结束,是你想要做这样的事情:


//If a checkbox named"cb" is checked, and the url contains"?showpastedate"
if ((cb.checked) && ~window.location.href.indexOf("?showpastdate")) { 
//Uncheck the checkbox and remove the"?showpastedate" from the url
 document.getElementById("showpastdate").checked = false;
 window.location.href.replace("?showpastdate","");
} else {
//Else, check the checkbox and add the"?showpastedate" to the url
 document.getElementById("showpastdate").checked = true;
 window.location.href +="?showpastdate";
}

注意"~"在 indexOf 前面的使用。
如果 string.indexOf("text") 在字符串的开头找到 "text",就像在 "tekstbooks bla bla bla" 它返回 0第一个索引,0开始计数。

当隐式将它的转换为布尔值时,这里零被解释为 false 。 如果 indexOf 在第一个索引处找到结果,它应该返回以指示找到一个字符串。 这就是为什么我们将位不~ 应用到 indexOf的结果。 -1indexOf"找不到"值返回 false,所有它的他结果 return true 。

原作者:

URL更改事件 JavaScript

http://help.dottoro.com/ljgggdjt.php

我想你也可以使用 onchange() javascript事件。

我再解释一下。

我有一个 JQuery datatable,通过CSS我有不同的<tr classes> 。 根据数据库中存储的信息,这些 <tr> 获得不同的类,从而在datatable中产生不同的颜色。

现在为一个 <tr class>,我想给用户选择隐藏/显示。 我想用一个复选框来做这个,javascript会在检查时解析一个 url,然后再次删除它。 这里URL可以用于php运行不同的查询,如果 $_GET['parsedurl']: 查询以显示所有表,elseif $_GET['empty']: 查询未显示 1信息。

但这是最糟糕的方法。 我需要找到一些东西来打开或者关闭 table 类的display: none,因为这是客户端端。

因这里我现在想要在URL中对javascript进行解析,并根据URL进行解析,我运行. php 到 echo 。 <tr style: display: none> 只是简单的<tr>

因此,我需要一些javascript来执行以下操作:

  • 如果选中复选框,则重定向到 projectlist.php? showpastdate
  • 当 URL = projectlist.php? showpastdate时,选中复选框。
  • 当 URL = projectlist.php? showpastdate和复选框被取消选中时,将选中复选框重定向到 projectlist.php, 。

我认为这些触发器是最好的选择?

使用. php,我将执行以下操作:


if (isset($_GET['showpastdate']))
{
<tr style: display: none>
}
else
{
<tr>
}

也许有人有更好的解决方案? 我想听听 !

谢谢。

编辑

我现在拥有的javascript是:


<script>
function toggleAutoRefresh(cb) {
 if (cb.checked) {
 window.location.replace("?showpastdate");
 }
//If a checkbox named"cb" is checked, and the url contains"?showpastedate"
 if ((cb.checked) &&!~window.location.href.indexOf("?showpastdate")) { 
//Uncheck the checkbox and remove the"?showpastedate" from the url
 document.getElementById("showpastdate").checked = false;
 window.location.href.replace("?showpastdate","");
 } else {
//Else, check the checkbox and add the"?showpastedate" to the url
 document.getElementById("showpastdate").checked = true;
 window.location.href +="?showpastdate";
 } 
}
</script>

选中复选框后,它转到 projectlist.php? showpastdate,并在那里取消选中。 当再次检查时,它转到 projectlist.php? showpastdateshowpastdate 。 它应该删除showpastdate,而不是添加另一个。

只需检查并执行。

原作者:

行了我知道了。


<script>
function toggleAutoRefresh(cb) {
 if (~window.location.href.indexOf("?hidepastdate") == 0){
 window.location.replace("?hidepastdate");
 document.getElementById("showpastdate").checked == true;
 }
 if (~window.location.href.indexOf("?showpastdate") == 0){
 window.location.replace("?showpastdate");
 document.getElementById("showpastdate").checked == true;
 }
}
</script>

现在URL在每次点击时都会得到切换,而PHP则会显示。

感谢你的努力,并将我指向正确的direction,Cerbrus ! 节省了我很多时间。

原作者:
...