使用indexOf作为函数中的参数返回子字符串

时间:2016-03-21 06:52:05

标签: javascript string function indexof

我应该创建一个函数来测试URL的有效性,然后根据某些字符的位置查找并返回URL字符串的部分(位置是未知的)。仅供参考,我对编程非常陌生,但一直在寻找和尝试许多答案。我的最新尝试使用了以下格式(在答案中找到),但在调用函数时仍然无法获得除空字符串之外的任何内容。

当我在Chrome中运行此功能时,请输入" http://www.niagaracollege.ca"或" http://lego.ca"即使我输入了有效的网址,我也会收到错误的回复。

function validURL(userInput)
{
    input = new String(userInput);

    if (input.indexOf("://") != -1 && input.lastIndexOf(".") != -1)
        return true;

    else
        return false;
  }

 function findProtocol(userInput)
{
    input = new String(userInput);
    var result = input.substring(0, input.indexOf("://"));
    return result;
}

function findServer(userInput)
{   
    input = new String(userInput);

    var result = input.substring(input.indexOf("://") + 1 ,input.lastIndexOf("."));

    return result;
}

function findDomain(userInput)
{
    input = new String(userInput);

    var result = input.substring(input.lastIndexOf(".") + 1);

    return result;
}

function btnReadURL_onclick()
{
    var userInput = document.getElementById("txtURL").value;

    var outputBox = document.getElementById("txtOutput");

    var URL = validURL(userInput);

    if (URL = true)
    {
       var Part1 = findProtocol(userInput);
       var Part2 = findServer(userInput);
       var Part3 = findDomain(userInput);

       outputBox.value = "Protocol: " + Part1 + "\nServer: " + Part2 + 
    "\nDomain: " + Part3;
    }   

    else (URL == true)
       outputBox.value = "Invalid URL"; 
 }

2 个答案:

答案 0 :(得分:0)

使用调试器找出userInput中的内容。代码很好。它应该工作。请参阅下面的示例代码。

test = function() {
    var test = "http://Test 2"
    alert(test.substring(0, test.indexOf("://")))
}

答案 1 :(得分:0)

您需要将值传递给findProtocol方法而不是DOM元素

替换

var userInput = document.getElementById("txtURL");

通过

var userInput = document.getElementById("txtURL").value;

并替换

if (URL = true)

if( URL == true )