0

当检查旁边的复选框时,我正在尝试通过列表项目放置一行。我已经设法做到了,但我无法检查该框是否被选中。

JS文件

    if(document.getElementById(theID).checked){

document.getElementById(theID).setAttribute("style", "text-decoration:line-through");
}

HTML/PHP

                echo'<ol>';
            foreach($to_do_XML->task as $item)
            {
                $theID = $item['id'];

            echo '<li id="'.$theID.'">'.$item.'</li>' ;?><form ><input  onclick="return cross('<?=$theID?>');" type="checkbox" name="done<?php $li_id_num_done ?>"/></form>
                 <?php     

            }
            echo '</ol>';

我还应该补充一点,列表项正在通过 xml 元素循环的 foreach 循环中添加

上面的代码没有任何帮助将不胜感激

4

2 回答 2

4

如果$theID是字符串,则需要在其周围加上引号:

     <input  onclick="return cross('<?php echo $theID; ?>');" type="checkbox" name="done<?php $li_id_num_done ?>"/>

还要从你的函数中删除它:

got_elements_id

这将导致引用错误。

于 2012-11-26T15:44:34.707 回答
0

我相信这会更好:

echo '<li id="'.$theID.'">'.$item.'</li>' ;?>
<form >
    <input  onclick="return cross('<? echo $theID; ?>');" type="checkbox" name="done<?php $li_id_num_done ?>"/>
</form>

function cross( id ){

    var element = document.getElementById( id );
    if( element.checked){

        element.style.textDecoration = "line-through";
    }
}

甚至:

function cross( id ){

    var element = document.getElementById( id );        
    element.style.textDecoration = element.checked ? "line-through" : "";
}

这还可以取消选中和删除 linethrough。

于 2012-11-26T15:58:33.493 回答