为什么javascript变量未定义? (第二次......)

时间:2012-09-21 21:14:37

标签: javascript jquery

我正在使用更多jQuery的修订代码重新发布此问题。

以下是定义对象的HTML代码:

<LEGEND><b>Select Study Sample</b></LEGEND>
<p>
<P CLASS=select_header>Study - Box - Well - Lab ID<br>
<SELECT multiple size=20 NAME="stylabid" ID="stylabid" onchange=show_stylabid() onclick=clear_fetch() STYLE="width: 115px">
<?php 
  $i=0;
  while ($i < $numstylabids) {
    $styarr = pg_fetch_row($stylabidresult);
    echo "<option value=$styarr[0]>$styarr[1]\n";
    $i++;           
  }
  ?>
</select>

<LEGEND><b>Select Project Sample</b></LEGEND>
<p>
<P CLASS=select_header>Project - Box - Well - Lab ID<br>
<SELECT multiple size=20 NAME="pjtlabid" ID="pjtlabid" onchange=show_pjtlabid() onclick=clear_fetch() STYLE="width: 115px">
<?php 
  $j=0;
  while ($j < $numpjtlabids) {
    $pjtarr = pg_fetch_row($pjtlabidresult);
    echo "<option value=$pjtarr[0]>$pjtarr[1]\n";
    $j++;           
  }
  ?>
</select>

现在,这是javascript;我只是想获取所选对象的值,可以是Study或Project。我稍后使用它来从数据库中检索数据:

function fetchgenotype() {
    var ms, mndx, ss, sndex = 0;

    ms = $("#marker")[0].selectedIndex;    

    if (Study_selected) {
      ss = $("#stylabid")[0].selectedIndex;
      sndx = $("#stylabid").val(ss);
    } else
      ss = $("#pjtlabid")[0].selectedIndex;
      sndx = $("#pjtlabid").val(ss);
    }    

    // for debugging...    
 alert('ss='+ss+', sndx='+sndx);

此代码在sndx = ...行上死亡。非常感谢任何帮助!

TIA

3 个答案:

答案 0 :(得分:1)

我认为你有语法错误

sndx应该是sndex ..或者反过来

var ms, mndx, ss, sndex = 0; // <--

$("#pjtlabid").val(ss) // <-- setter method

.val(value)也是一个setter方法,所以sndx是未定义的,因为它从未被定义为任何值

答案 1 :(得分:1)

目前我不知道Study_selected的$(“#marker”)是什么。

假设到目前为止还没有任何问题,请将功能更改为:

if (Study_selected) {
      sndx = $("#stylabid").val();
    } else
      sndx = $("#pjtlabid").val();
    }

val()在没有参数的情况下使用时返回form元素的值,否则它将设置值并返回一个jQuery-object。

无需检索selectedIndex,您可以直接访问select元素的值(它将是当前所选选项的值)

答案 2 :(得分:0)

这是一个错字:

var ms, mndx, ss, sndex = 0;

应该是

var ms, mndx, ss, sndx = 0;