0

こんにちは、誰かが私を助けてくれるかどうか興味がありました。私は通常ここに投稿しませんが、すべての努力を使い果たしたので、これを理解することはできません. ここにこのコードがあります

function insertVideo(link)
{
if (link)
    {
    if(link.substring(0,29)!="http://www.youtube.com/watch?"){
        alert("You did not enter a valid URL!\r\nPlease try again.");
        return false;
        }
    else{
        link = link.replace(/watch\?/,"").replace(/\=/,"/");
        }
    var editpane = document.frmPost.addesc;
    var linkcode = "[EMBED]" + link + "[/EMBED]";

    editpane.focus();
    /*if (document.selection)
    {
        document.selection.createRange().text = linkcode;
    }
    else*/
    if (editpane.selectionStart || editpane.selectionStart == '0')
        {
        var selstart = editpane.selectionStart;
        var selend = editpane.selectionEnd;

        editpane.value = editpane.value.substring(0, selstart) + linkcode + editpane.value.substring(selend);
        editpane.selectionStart = selstart + linkcode.length;
        editpane.selectionEnd = editpane.selectionStart;
        }
    else
        {
        editpane.value = editpane.value + linkcode;
        }

    editpane.focus();
    }
}

私が抱えている問題は、ユーザーがアドレスに https を含む YouTube ビデオをトップ投稿しようとしたときです。

変えればわかる

{
if(link.substring(0,29)!="http://www.youtube.com/watch?"){
    alert("You did not enter a valid URL!\r\nPlease try again.");
    return false;
    }

{
if(link.substring(0,30)!="https://www.youtube.com/watch?"){
    alert("You did not enter a valid URL!\r\nPlease try again.");
    return false;
    }

できます。しかし、ユーザーが https なしで http アドレスを入力すると、機能しなくなります。ステートメントを OR と組み合わせることができると考えましたが、これも機能しません。

 if(link.substring(0,29)!="http://www.youtube.com/watch?" || link.substring(0,30)!="https://www.youtube.com/watch?"){
    alert("You did not enter a valid URL!\r\nPlease try again.");
    return false;
    }
else{
    link = link.replace(/watch\?/,"").replace(/\=/,"/");
    }

したがって、基本的には、どちらか一方だけでなく、両方の状況 (https と http) で機能する必要があります。私は困惑しています、私はjavascriptのプロではないので、それは小さなエラーだと確信していますが、自分でこれを理解しようとするのに多くの時間を費やしました. できれば助けてください。ありがとう!

4

1 に答える 1

1

OR ( ||) をブール AND ( &&) に変更するだけです。

if (link.substring(0,29) !== "http://www.youtube.com/watch?" && link.substring(0,30) !== "https://www.youtube.com/watch?") {
    alert("You did not enter a valid URL!\r\nPlease try again.");
    return false;
}
// the else is unnecessary
// else {
link = link.replace(/watch\?/,"").replace(/\=/,"/");
// }

これは元のコードと同じように機能します。URL がhttp://の場合、チェックに失敗しhttps://(またはその逆)、条件が true になり、失敗コードが実行されます。&&両方のテストに失敗して無効にするために URL が必要になったため、修正するように変更します。

ちょっとした注意: 意図的に (または他の特別な状況で) 行っている場合を除き、型を変換するのではなく型が異なる場合、これらは自動的に失敗するため、( and の代わりに)および===形式!==の等価性テストを使用する必要があります。暗黙的に。==!=

于 2013-10-22T06:27:38.963 に答える