为什么 JS 变量未定义

Why is JS variable undefined?

本文关键字:未定义 变量 JS 为什么      更新时间:2023-09-26

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

但是我一直得到链接=文件.php?var1=selected&var2=undefined。

我有一个几乎相同的功能,工作正常!

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

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

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

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

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

我在这里更改了两件事:

  1. my_text值移动到函数调用中。
  2. 更改了引号。 HTML需要双引号,JavaScript可以使用单引号或双引号。 因此,在这种情况下,在内联 JavaScript 中使用双引号和内联 JavaScript 中的单引号会更清楚。

替换:

<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'""'>