Node
Node

Reputation: 35

Is possible search an element array from input?


I'm creating a little script to try and search for an element in the array based on input.

var modulo = document.getElementById("modulo").value;
var link = [
  "http://www.forumfree.it/",
  "http://www.forumcommunity.net/",
  "http://www.blogfree.net/",
];
if(modulo.indexOf(link) > -1) {
  alert("Your site is:" + modulo);
} 

else {
  alert("Sorry, I don't found:" + modulo)
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Search element in array</title>
</head>
<body>
<input type="text" id="modulo" class="form">
</body>
</html>

Anyone can explain to me how to do that (if there's another way to do it better, inform me), and why my code doesn't run? Thanks!

Code explanation: I've used var modulo to contain the value of the input. Then I've created a variable to contain the link. Then if-else statement and indexOf to search and find it.

Thanks, the code solution is: https://plnkr.co/edit/bDt4n34KBFAvZrSWmb4a?p=preview

Upvotes: 0

Views: 48

Answers (4)

Silvinus
Silvinus

Reputation: 1445

You can try with this plunker https://plnkr.co/edit/bDt4n34KBFAvZrSWmb4a?p=preview it used event trigger to have a button to search website :

<button onclick="myFunction()">Search</button>

and I wrote your code into a function.

I hope this will help you

The final state :

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="style.css">
  <script src="script.js"></script>
</head>

<body>
  <input type="text" id="modulo" class="form">
  <button onclick="myFunction()">Search</button>
</body>

var link = [
  "http://www.forumfree.it/",
  "http://www.forumcommunity.net/",
  "http://www.blogfree.net/",
];

function myFunction() {
  var input = document.getElementById("modulo");
  var results = [];
  for(var i = 0; i < link.length; i++) {
    if(link[i].indexOf(input.value) > -1) {
    results.push(link[i]);
  }
}
if(results.length == 1) {
  alert("Your site is:" + results[0]);
} 
else if (results.length > 1){
  alert("Sorry, your search return more than one result:" + results)
}
else {
  alert("Sorry, I don't found:" + input.value)
}

}

Upvotes: 2

juz
juz

Reputation: 629

function runscript() {
  var modulo = document.getElementById("modulo").value;
  var link = [
    "http://www.forumfree.it/",
    "http://www.forumcommunity.net/",
    "http://www.blogfree.net/",
  ];
  var found = false;
  for(var i = 0; i < link.length; i++) {
    if (link[i].indexOf(modulo) > -1) {
      alert("Your site is:" + link[i]);
      found = true;
    } 
  }

  if (!found) {
    alert("Sorry, I don't found:" + modulo)
  }
}

And the HTML

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Search element in array</title>
</head>
<body>
<input type="text" id="modulo" class="form">
<input type="button" onclick="runscript()" value="search" />
</body>
</html>

You will need to press button for search

Upvotes: 0

IMTheNachoMan
IMTheNachoMan

Reputation: 5821

I think you were on the right track. You just need a few things:

  • a button to initiate the search
  • put your code in a function so you can call it
  • you want to search the array link for the value of the input modulo

function findIt() {
  var modulo = document.getElementById("modulo").value;
  var link = [
    "http://www.forumfree.it/",
    "http://www.forumcommunity.net/",
    "http://www.blogfree.net/",
  ];
  if (link.indexOf(modulo) > -1) {
    alert("Your site is:" + modulo);
  } else {
    alert("Sorry, I don't found:" + modulo)
  }
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Search element in array</title>
</head>

<body>
  <input type="text" id="modulo" class="form">
  <input type="button" onclick="findIt()" value="find it">
</body>

</html>

Upvotes: 0

SulZ
SulZ

Reputation: 89

You have

if(modulo.indexOf(link) > -1)

but I think that it should be

if(link.indexOf(modulo) > -1) 

Assuming that modulo is a single string element, this will search the link array for that element and return the index of that element.

Upvotes: 1

Related Questions