如果,或者,虽然不是..需要 JavaScript 帮助

If, Or, while Not.... Javascript help needed

本文关键字:需要 JavaScript 帮助 或者 如果      更新时间:2023-09-26

嗨,伙计们,我很好奇是否有人可以帮助我。我通常不在这里发帖,但我已经用尽了所有的努力,无法弄清楚这一点。我这里有这个代码

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 的专业人士,所以我确定这是一个小错误,但我花了太多时间试图自己解决这个问题。如果可以的话,请帮忙。谢谢!

就像将 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 未通过两个测试才能无效。

只是一点注意:除非你是故意这样做的(或其他特殊情况下),否则你应该使用相等性测试的===!==形式(而不是==!=),因为它们是不同的类型会自动失败,而不是隐式转换类型。