2015-07-10 11 views
-1

Я пытаюсь это сделать, когда я иду на сайт, есть кнопка, и когда вы нажимаете ее, она предлагает вам «Что такое пароль?». Чтобы определить, правильно ли это, я использую строки concat для ответа на запрос и добавления .html до конца, и я хочу, чтобы он перенаправлял (passwordtheyenter) .html, поэтому, если они вводят «тест» в качестве пароля, Снимем их "test.html"Почему мой код html/javascript не работает?

Вот мой код:

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
     function testFunction() { 
     var str1 = prompt.("What's the password?"); 
     var str2 = ".html"; 
     var pass = str1.concat(str2); 
     } 
    </script> 
</head> 
<body> 
<button onclick="testFunction()">Chat</button> 


<script> 
    open.window(pass) 
</script> 
</body> 
</html> 

Спасибо.

+1

Что такое 'подсказка()'.? Вы должны открыть консоль (F12 в большинстве браузеров). Это даст вам знать, есть ли в вашем коде ошибки. –

+0

Что произойдет, если кто-то попробует несколько паролей и найдет страницу, которую вы не хотели видеть? –

+0

вы никогда не должны использовать проверку на стороне клиента как основное средство аутентификации. –

ответ

2

Есть четыре основные причины, ваш HTML/Javscript код не работает правильно.

Во-первых, область действия переменной pass определена только внутри функции и поэтому ее можно получить только в пределах этой функции. Определите его вне функции, затем установите его значение внутри.

Редактировать: Потому что pass теперь используется только функцией, его не нужно определять вне его.

Далее, я полагаю, вы пытались использовать функцию window.open(). Вы писали open.window() в своем коде.

В-третьих, вы случайно был период после приглашения() вызова

В-четвертых, вы должны иметь window.open() внутри функции, так что он не работает, пока использование фактически не нажмет кнопку ,

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
     function testFunction() { 
      var str1 = prompt("What's the password?"); 
      var str2 = ".html"; 
      var pass = str1 + str2; 
      window.open(pass); 
     } 
    </script> 
</head> 
<body> 
<button onclick="testFunction()">Chat</button> 
</body> 
</html> 
+0

Это сработало для меня, спасибо. – Drew

+1

@Drew Если у вас есть вызов 'window.open' внутри' testFunction', вам не нужно делать переменную 'pass' global – jasonscript

0

Переменная pass определена только внутри testFunction, поэтому вы не можете получить к ней доступ при попытке позвонить open.window.

Попробуйте возвращение pass в testFunction и передавая этот результат open.window

+0

Извините, я действительно новичок в подобных вещах. Не могли бы вы рассказать о том, как это сделать? Я очень ценю ответ. – Drew

+0

Ваша функция open.window выполняется, когда страница загружается, но вы только запрашиваете пользователя, когда нажимаете кнопку. Переместите open.window в testFunction и удалите тег скрипта, который находится после кнопки. –

+0

(Если вы так отвечаете), это мой новый код, но он по-прежнему не работает: http://pastebin.com/ZFUfre0W – Drew

0

Вы, наверное, ищете:

function testFunction() { 
    // Prompt user for input 
    var str1 = window.prompt("What's the password?"); 
    // Append .html to user input 
    var str2 = ".html"; 
    // Open new window with concatenated result 
    window.open(str1.concat(str2)); 
} 

Вы можете удалить:

<script> 
    open.window(pass) 
</script> 

Здесь работает: https://jsbin.com/gewudaruda/edit?html,output

0

Попробуйте заменить первый сценарий тег с приведенным ниже. Рекомендуется использовать тип скрипта с атрибутом type для тега.

<script type="text/javascript"> 
    function testFunction() { 
    var str1 = prompt("What's the password?"); 
    window.open(str1+".html"); 
    } 
</script> 
+0

В HTML5 атрибут type является необязательным и будет по умолчанию' text/javascript' как per http://www.w3.org/TR/html5/scripting-1.html#attr-script-type – EasyCo

1

Проблемы с вашим кодом следующим образом:

  1. prompt.() синтаксически неверный код Javascript. Это даст вам сообщение об ошибке, которое можно увидеть в консоли (вы можете открыть его, нажав F12 в большинстве браузеров, или CTRL + SHIFT + I в Opera).

  2. open.window() не имеет аналогов Javascript-код. Нет глобальной переменной open. Что вы, вероятно, хотели здесь, это window.open(...).

  3. Способ, которым написан ваш код, не имеет большого смысла. Когда кнопка нажата, вызывается функция, но она ничего не делает. Javascript внизу даст вам ошибку, но даже если он был действительным Javascript, он все равно даст вам ошибку, потому что переменная pass не определена в глобальной области; он был определен внутри функции. Как только функция будет запущена, переменная будет забыта.

Было бы лучше, чтобы добавить обработчик щелчка на кнопке вместо:

<!doctype html> 

<!-- The button --> 
<button id="my-button">Chat</button> 

<script> 
    // Get the button 
    var myButton = document.getElementById("my-button"); 

    // Set a click handler on the button 
    myButton.onclick = function() { 

     // Get the page 
     var page = prompt("What's the password?"); 

     // Set a new location for the window; this sends the 
     // current page to the new page 
     window.location = page + ".html"; 
    }; 
</script> 
Смежные вопросы