2013-10-04 4 views
0

Странно - мне чего-то не хватает! У меня есть эта простая вещь js, которая идет так:Почему переменная JS не определена?

<select onchange='my_function(this.options[this.selectedIndex].value),\"my_text\"'> 

и JS - это просто;

function my_function(selected, text) { 
    var link="file.php?var1="+selected+"&var2="+text; 
    document.write(link); 
} 

Но я получаю ссылку = file.php? Var1 = выбранный & var2 = не определен

У меня есть почти идентичная функция, которая работает отлично!

+0

с помощью document.write, как это не очень хорошая идея ... –

+0

Было бы полезно Репрографический это в http://jsfiddle.net/ и ссылку на эту скрипку здесь –

+0

я только делаю что устранения неполадок. –

ответ

2

Ваш выбор HTML должен быть вместо этого:

<select onchange="my_function(this.options[this.selectedIndex].value,'my_text')"> 

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

+0

На самом деле это была просто неуместная скобка :(- спасибо за вашу помощь! –

0

заменить:

<select onchange='my_function(this.options[this.selectedIndex].value),\"my_text\"'> 

с этим:

<select onchange='my_function(this.options[this.selectedIndex].value),"my_text"'> 

потому что \ является escape-символом, и это приводит к тому, что ваш текст передается как my_text вместо "my_text", а в первом - неправильная строка.

Я думаю, что вы пытаетесь добавить " котировки по строке, но строка запроса по умолчанию строка не нет необходимости добавлять цитаты, если до сих пор вы потребности попробуйте:

<select onchange='my_function(this.options[this.selectedIndex].value),"\"my_text\""'> 
1

Вы не прохождение второе значение для функции. Он находится вне вызова функции (и действует только как недопустимая разметка). Попробуйте:

<select onchange="my_function(this.options[this.selectedIndex].value, 'my_text')"> 

Я изменил две вещи здесь:

  1. Переехал значение my_text в вызове функции.
  2. Изменены кавычки. HTML ожидает двойные кавычки, JavaScript может использовать либо одинарные кавычки, либо двойные кавычки. Таким образом, в этом случае проще использовать двойные кавычки для разметки HTML и одиночных кавычек в встроенном JavaScript.
Смежные вопросы