SELECT - wybór opcji i błędy js

0

Najpierw funkcja w js:

function **createURLFilters(SelName)** {

        var obj=document.getElementById(SelName);

	window.location.href ='http://'+location.hostname+location.pathname+'?search='+obj.options[**obj.selectedIndex**].value;

}

funkcja ma "przejść" na stronę wg danego wzoru, czyli ma "załadować" stronę http://[mojadomena]/index.php?search=[opcja wybrana z listy]

Teraz trochę PHP:

function createFilters($filtername) { //załóżmy, że $filtername = 'status'
	
		$sql = new mysql("SELECT DISTINCT `".$filtername."` FROM `contacts` WHERE `user` = '%i'",0, $CURUSER['id']); // wybieranie wszystkich kontaktów zalogowanego USERA z ocpją DISTINCT
		
		$str='<SELECT name="filter_'.$filtername.'" onChange="**createURLFilters(\'filter_'.$filtername.'\')**">'; // tag otwierający SELECT nazwa w tym przypadku to "name='filter_status' " i zdarzenie onChange, które wywołuje funkcję JS ze zmienną o nazwie "filter_status"
		$str.='<OPTION value="0">---</OPTION>'; 
		
			foreach ($sql->getAll() as $op) { // początek pętli
			
				$str.='<OPTION value="'.$op[$filtername].'">'.$op[$filtername].'</OPTION>'; // stworzenie opcji wyboru gdzie value będzie równe jednowyrazowym statusom z bazy danych np. student, pracownik, tester, szef itp.
				
			}
			
		$str.='</SELECT>';	// zamknięcie SELECTa
		return $str; // 'wyrzucenie' całego selecta na zewnątrz
	}

a teraz wywołanie funkcji:

<?=createFilters('status')?>

co w HTML wygląda tak:

<select name="filter_status" onchange="createURLFilters('filter_status')">
<option value="0">---</option>
<option value="admin">admin</option>
<option value="moderator">moderator</option>
<option value="szef">szef</option>
<option value="tester">tester</option>
<option value="pracownik">pracownik</option>
</select>

No i teraz podczas wybierania jednej z opcji z SELECTa dostaję komunikat w konsoli:

TypeError: obj is null

Od razu napiszę, że SELECT się wyświetla z pięknie załadowanymi opcjami zczytanymi z bazy danych.

Jakiś pomysł???

1

getElementById zwraca element o podanym ID. Gdzie ty tam masz w swoim selekcie atrybut id?

obj jest null i przekierowanie pewnie nie jest robione.

A zamiast tego:
window.location.href = 'http://'+location.hostname+location.pathname+'?search='+obj.options[obj.selectedIndex].value;
Zrób po prostu:
window.location.href = '?search='+obj.options[obj.selectedIndex].value;

0

@dzek69: Dzieki wielkie. Siedziałem nad tym ponad 24h. Szukalem wszedzie i zapomnialem, że "NAME" to nie jest "ID" :D

Oj jam głupi, głupi :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1