javascript - 如果,或者,虽然不是…需要Java脚本帮助

标签 javascript php youtube embed

大家好,我很想知道是否有人可以帮助我。我通常不会在这里发布信息,但是我已经花了所有力气,无法弄清楚。我这里有这段代码

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(||)更改为 bool(boolean) 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才能使两个测试均无效。

只需注意一点:除非您有意进行此操作(或在其他特殊情况下),否则应使用平等测试的===!==形式(而不是==!=),因为如果它们的类型不同,它们会自动失败。隐式转换类型的过程。

关于javascript - 如果,或者,虽然不是…需要Java脚本帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19510430/

相关文章:

javascript - 在数组中使用 split

php - 检查字符串是否为日期

javascript - 如何减慢 JavaScript 代码的执行速度?

jquery - 为什么我的标签内容不刷新?

javascript - 现有 IFrame 的 YouTube IFrame API 无法运行回调

javascript - 类似 url 的 AngularJS 正则表达式路由以加载不同的 Controller 和 View

javascript - jQuery 淡入淡出动画不做我想做的事

JavaScript:如何从 keyup 事件中获取发送者输入元素的值?

php - 没有 CMS 的 Prestashop 1.6 中的自定义页面

php - 在 Laravel 中使用原始 json 队列消息