【问题标题】:If, Or, while Not.... Javascript help neededIf, Or, while Not.... 需要 Javascript 帮助
【发布时间】:2013-10-30 21:13:21
【问题描述】:

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

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

【问题讨论】:

    标签: javascript php youtube embed


    【解决方案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:// 检查失败(反之亦然),使条件为真,因此运行您的失败代码。将其更改为 && 可以修复它,因为现在需要 URL 才能使两个测试都失败才无效。

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

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 2017-10-05
      • 2016-07-26
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多