2012-07-05 10 views
-2

검색 매개 변수에 따라 API를 실행할이 사이트를 구축했습니다. if 문을 사용하여 드롭 다운 값을 결정했습니다. 그러나 어떤 이유로 든 if 문장이 실행되지 않습니다. 내가 잘못하고있는 게 있나요? 여기가 작동하지 않는 이유는 드롭 다운의 선택을 변경할 때 변수 maindropval 만 설정되어있는 코드Javascript if 문이 트리거되지 않습니다

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script type="text/javascript"></script> 
<title>Testing</title> 
</head> 
<body> 
<form name="bestbuysearch"> 
<select name="selection" onchange="setvalue()"> 
<option value="default">Select Category(Optional)</option> 
<option value="abcat0100000">TV & Home Theater</option> 
<option value="abcat0207000">Musical Instruments</option> 
<option value="abcat0300000">Car, Marine & GPS</option> 
<option value="abcat0400000">Cameras & Camcorders</option> 
<option value="abcat0500000">Computers & Tablets</option> 
<option value="abcat0600000">Movies & Music</option> 
<option value="abcat0700000">Video Games</option> 
<option value="abcat0800000">Mobile Phones</option> 
<option value="abcat0900000">Appliances</option> 
<option value="pcmcat142300050026">Outlet Center</option> 
<option value="pcmcat242800050021">Health, Fitness & Sports</option> 
<option value="pcmcat245100050028">Office</option> 
<option value="pcmcat248700050021">Home</option> 

</select> 
<input type='text' id="item" placeholder='Search Here!' style='margin-top: 10px' size="70" maxlength=150 width="100px" />  
<input type='submit' value="Search" onclick="getstring(document.getElementById('item').value)"/> 
</form> 


<script> 
function setvalue(){ 
dropval=document.getElementsByName("selection")[0]; 
maindropval=dropval.value; 
} 
function getstring(x){ 
    //link="http://api.remix.bestbuy.com/v1/products(name="+x+"*)?show=sku,name,regularPrice&apiKey=ydpyq9h9cmpmzaakbawv9mzk"; 
    //link2= "http://api.remix.bestbuy.com/v1/products(name=ipad|shortDescription=32gb*)?show=sku,name,shortDescription&apiKey=ydpyq9h9cmpmzaakbawv9mzk"; 
    link1="http://api.remix.bestbuy.com/v1/products(name="+x+"*)?show=sku,name,regularPrice,shortDescription&apiKey=ydpyq9h9cmpmzaakbawv9mzk"; 
    link2="http://api.remix.bestbuy.com/v1/products(categoryPath.id="+maindropval+"&name="+x+"*)?show=sku,name,shortDescription,regularPrice,&apiKey=ydpyq9h9cmpmzaakbawv9mzk"; 
    if(maindropval=='default'){ 
    alert("worked"); 
     window.open(link1);}  
    else{ 
     window.open(link2);} 


} 
function getresult(value){ 
link="http://api.remix.bestbuy.com/v1/products(name="+x+"*)?show=sku,name,rating,regularPrice&apiKey=ydpyq9h9cmpmzaakbawv9mzk"; 
alert("step 2 completed"); 
} 
</script> 
</body> 
</html> 
+4

[SO]에 오신 것을 환영합니다. [faq]를 읽어보십시오. [editing-help] (http://stackoverflow.com/editing-help) 페이지를 검토하면 좋을 것입니다. 긴 코드 블록은 읽기가 어렵고 [피들] (http://jsfiddle.net)로 더 잘 표현됩니다. – zzzzBov

+2

오류가 있습니까? maindropval에서 범위 문제가있을 수 있습니다. fone 얘들 아 그냥 해결할 경우 –

+0

... 나는 dropbox가 토글 될 때까지 onselect 함수가 실행되지 않는다는 것을 깨달았습니다. 그래서 나는 초기 값을 "default"로 설정하고 거기에서부터 실행했습니다. :) –

답변

0

에게 있습니다.

변수에 "default" 값을 가져 오려면 드롭 다운의 첫 번째 항목이 아닌 다른 항목을 선택하고 다시 첫 번째 항목으로 다시 변경해야합니다.

설정 변수의 초기 값 :

var maindropval = "default"; 

또는 페이지 값 설정로드되면 기능을 실행 브라우저 기억 경우

window.onload = setvalue; 

(제 용액보다 더 낫다 것을 이전 선택에서 양식 값.이 경우 변수는 드롭 다운에 대해 기억 된 값에서 설정됩니다.)

0

마이크와 나는 같은 생각을 가지고있었습니다.

다음은 fiddle입니다 ... 문제는 maindropval의 범위 지정입니다.

+0

부분적으로 해결되었습니다 ... 변수를 선언하면 변수가 정의되지 않았기 때문에 나타나는 오류를 피할 수 있지만 드롭 다운에서 항목을 선택한 다음 다시 첫 번째 항목으로 변경하지 않는 한 계속 " 즉, 드롭 다운을 변경하지 않고 버튼을 클릭하면 첫 번째 항목이 선택되었음을 인식하지 못합니다. – Guffa

+0

맞습니다.'var maindropval = 'default';'(http://jsfiddle.net/DVRfC/1/)을 읽어야합니다. –

관련 문제