0

这很奇怪——我一定错过了什么!我有一个像这样的简单 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);
}

但我不断收到 link=file.php?var1=selected&var2=undefined

我有一个几乎相同的功能,效果很好!

4

3 回答 3

2

您的选择 html 应该是这样的:

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

您过早地关闭函数调用。另外,请注意,我已将外引号切换为双引号,将内引号切换为单引号。您不需要转义内部引号,并且属性被双引号而不是单引号更传统..

于 2013-10-04T18:22:47.813 回答
1

您没有将第二个值传递给函数。它在函数调用之外(并且仅作为无效标记)。尝试:

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

我在这里改变了两件事:

  1. 将值移动my_text到函数调用中。
  2. 更改了引号。HTML 需要双引号,JavaScript 可以使用单引号或双引号。因此,在这种情况下,对 HTML 标记使用双引号和在内联 JavaScript 中使用单引号会更清楚。
于 2013-10-04T18:31:38.487 回答
0

代替:

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

有了这个:

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

因为\是一个转义字符,它导致传递你的文本my_text而不是"my_text"第一个不是正确的字符串。

我认为您尝试"在字符串上添加引号,但查询字符串默认情况下是一个字符串,如果您仍然需要,则无需添加引号然后尝试:

<select onchange='my_function(this.options[this.selectedIndex].value),"\"my_text\""'>
于 2013-10-04T18:26:40.520 回答