0

このコードはどういうわけか機能していません。その理由はわかりません.phpやjsが苦手で、ウェブサイトを作成しようとしているだけです.

機能していない部分はこのお気に入りボタンです。機能する必要があるように機能しますが、クリックしても「お気に入りに追加」に切り替わらず、ブラウザを更新した場合にのみ機能します。

これは、php ファイルによって生成される html です。

<a class="btn" id="fav28" title="Add to Favorites" href="javascript:;" onclick="AddFav('28','fav','add')">
    <i class="icon-heart"></i>
</a>

そして、これはjs関数です:

function AddFav(id, dothis, dowhat) {

$.ajax({
    url: ("/process.php?do="+dothis+"&id="+id+"&action="+dowhat)
});
if(dowhat == "add"){
    document.getElementById(dothis+id).className = 'disabled';
    document.getElementById(dothis+id).onclick = another_function
    document.getElementById(dothis+id).title = 'Remove from Favorites';
}else if(dowhat == "remove"){
    document.getElementById(dothis+id).className = 'btn';
    document.getElementById(dothis+id).title = 'Add to Favorites';
}
}

私は試してみました

document.getElementById(dothis+id).onClick = "AddFav(28,id,remove)";

しかし、これでは何も起こりません。単に onclick を変更しません。

それがしなければならないことは、「onclick」イベントを

onclick="AddFav('28','fav','add')"

onclick="AddFav('28','お気に入り','削除')"

前もって感謝します。

4

4 に答える 4

1

あなたは試したと言います

document.getElementById(dothis+id).onClick = "AddFav(28,id,remove)";

idしかし、次のようなand remove(文字列) のqoutes がないため、構文が間違っています。

AddFav(28,'id','remove')";

jquery を使用していることがわかりました。jquery を使用している場合は、すべての機能をお楽しみください。関数は次のようになります。

function AddFav(id, dothis, dowhat) {

$.ajax({
    url: ("/process.php?do="+dothis+"&id="+id+"&action="+dowhat)
});
if(dowhat == "add"){

    $('#' + dothis + id).addClass('disabled'); // add class disabled
    $('#' + dothis + id).removeClass('btn'); // remove class btn if exist

    $('#' + dothis  +id).on( "click", function() {
         AddFav(id,'fav','remove'); // attach new function AddFav for click event
    });

    $('#' + dothis  +id).attr('title','Remove from Favorites');

}
else if(dowhat == "remove"){

    $('#' + dothis + id).addClass('btn'); // add class btn
    $('#' + dothis + id).removeClass('disabled'); // remove class btn if exists

    $('#' + dothis  +id).attr('title','Add to Favorites');

}
}
于 2013-10-29T19:35:29.220 に答える