2010-05-20 118 views
0

我的問題是我的變量不能在JavaScript中工作。 所有的變量都需要在開始時沒有一些字符的名字,這是愚蠢的事情......無論如何,我正在嘗試做一個讓「選擇所有複選框」的函數。它不工作,所以我看着頁面源/信息,發現變量沒有改變。無法訪問表單元素

這是我輸入:

echo "<input onclick='checkAll(1);' type='checkbox' name='master'/><br/>"; 

我的功能:

function checkAll(i) 
{ 
for(var i=1; i < <?php echo $num; ?>; i++) 
{ 
    if(document.demo.master[i].checked == true) 
    { 
    document.demo.message[i].checked = true; 
    } 
    else 
    { 
    document.demo.message[i].checked = false; 
    } 
} 
} 

所以是的,就是這樣。我可以告訴你,我也試過沒有<i>在:checkAll("i")


編輯:每個複選框爲每個消息有這樣的代碼:echo "<input style='margin-left:-15px;margin-top:20px;' type='checkbox' name='message' value='$rid' /><br/>";


編輯:而且,我嘗試了代碼曾幾何時,它在另一臺計算機上工作,但在我的工作,它沒有工作。我們有完全相同的代碼......這是正常的嗎?哪裏不對?

+0

時,有在收件箱中一個消息,它工作時,我刪除所有的[I]和我在checkAll (「一世」); – linkcool 2010-05-20 03:21:38

+0

對於其他複選框,HTML的外觀如何? – 2010-05-20 03:30:08

+0

如果你正在創建一個只檢查所有複選框的函數,那麼它不需要將一個變量作爲輸入。此外,你可以簡單地這樣做:if(document.demo.master [i] .checked){document.demo.message [i] .checked = document.demo.master [i] .checked; } – yarmiganosca 2010-05-20 03:32:50

回答

0

爲什麼不乾脆:

function checkAll() 
{ 
for(var i=0; i < <?php echo $num; ?>; i++) 
{ 
    document.demo.message[i].checked = true; 
} 
} 

如果你想切換當前值:

function toggleAll() 
{ 
for(var i=0; i < <?php echo $num; ?>; i++) 
{ 
    document.demo.message[i].checked = !document.demo.message[i].checked; 
} 
} 

然而,這似乎並沒有在實踐中是非常有用的(如果A檢查和B和C沒有檢查,你希望多久檢查一次A和B和C?)。我只需選擇全部和全部取消按鈕。

我刪除了參數,改變了我,開始在0(0-索引),並開了它無條件地選中此複選框。在你將它倒退之前,它會檢查它是否已經被檢查過,反之亦然。而且你不需要在checkAll方法中將它設置爲false。

同時,使全選按鈕:

echo "<input onclick='checkAll(1);' type='button' name='master' value='Select All' /><br/>"; 
+0

我認爲他的目的是提供一個可以切換一組複選框的複選框。可能更好地命名爲'toggleAll' – 2010-05-20 03:36:39

+0

是或checkall,並且如果它們已被選中,則取消選中它們 – linkcool 2010-05-20 15:27:45

0

對於這個問題,我使用的prototype js lib

力量把你的複選框 <input style='margin-left:-15px;margin-top:20px;' type='checkbox' name='message' value='$rid' />

添加類

<input class='checkall' style='margin-left:-15px;margin-top:20px;' type='checkbox' name='message' value='$rid' />

然後

$$('.checkall').each(function(item){ 
    item.checked = true; 
}); 

,或者如果你想選中/取消選項

$$('.checkall').each(function(item){ 
    if(item.checked) 
    item.checked = false; 
    else 
    item.checked = true; 
});