Hi spL
Ich bin grad an einem ähnlichen Problem dran. Ich glaub nicht, dass es geht, denn dann funktioniert die doFetchRow Funktion nicht mehr, wie sie soll. Sie hängt so wie ich es einschätze an dem Attribut selectedIndex. Damit wird der
Index und der Value der gewählten Variante ausgeben. Wenn du es als Klartext wählst, musst du ja auf die HTML-Option verzichten, oder seh ich das falsch. Wäre natürlich nicht schlecht, wenn man option losgelöst von select verwenden kann.
Das würde mir zumindest helfen. Ich versuch mich grad daran, eine Lösung zu finden, wie ich über meine Thumbnail-Scroll-Line die Variante auswählen und per Ajax laden kann. Als Link mit Neuladen ist das ja relative einfach. Aber ich
will's eben in einer Ajaxvariante. Dazu hab ich versucht die doFetchRow Funktion umzuschreiben, aber irgendwie klemmts, denn die document.getElementById holt sich ja alle Werte aus den gesetzten Varianten-Auswahlboxen in der Einzelansicht.
Mit dem Produktimage2 funktioniert es. Aber er springt nicht zum geklickten Element, sondern nimmt das erste Element der jeweiligen gesetzten ID. Wenn ich die ID veränder, dann müsste ich ja nach "var id = feTable+"-"+view+"-"+uid+"-"+field;"
noch ne HTML-ID anhängen. Aber ich glaub dann funktioniert ja meine normale Varianten Select-Box nicht mehr.
Hat jemand ne Idee, wie ich das lösen könnte? Oder wäre es einfacher eine neue Function zu schreiben,
um den Wert von select gleich als Wert in das data[table][fields] zu schreiben?
Danke schon mal für eure Tipps.
Hier die doFetchRow Funktion aus class.tt_products_javascript.php mit meinen Anpassungsversuchen
var vBoxCount = new Array(1); // number of select boxes
var v = new Array(); // variants
vBoxCount["tt_products"] = 10;
v["tt_products"] = new Array(10);
v["tt_products"][0] = "color";
v["tt_products"][1] = "size";
v["tt_products"][2] = "description";
v["tt_products"][3] = "gradings";
v["tt_products"][4] = "color2";
v["tt_products"][5] = "color3";
v["tt_products"][6] = "size2";
v["tt_products"][7] = "size3";
v["tt_products"][8] = "material";
v["tt_products"][9] = "quality";
function doFetchRow(table, view, uid, select) { //select hab ich hinzugefügt, als Ersatz für selectedIndex)
var data = new Array();
var sb;
var temp = table.split('_');
var feTable = temp.join('-');
data["view"] = view;
data[table] = new Array();
data[table]["uid"] = uid;
for (var k = 0; k < vBoxCount[table]; k++) {
var field = v[table][k];
var id = feTable+"-"+view+"-"+uid+"-"+field;
sb = document.getElementById(id);
if (typeof sb == 'object') {
try {
var index = sb.selectedIndex; // Verknüpfung zu HTML select
var index2 = sb.title; // ein Alternativwert für selectedIndex
if (typeof index != 'undefined') {
var value = sb.options[index].value;
data[table][field] = value;
}
if (index2 != '') { // Wenn im HTML-Element der Variante ein "title" gesetzt ist
var value = select;
data[table][color] = value;
}
}
catch (e) {
// nothing
}
}
}
tt_products_fetchRow(data);
return true;
}
Auszug aus der Einzelansicht von meinem Shop-Template
<span onclick="doFetchRow('tt_products','single',896,1);" id="###PRODUCT_SIZE_ID###" title="1">###PRODUCT_IMAGE2:MINI###</span>
<span onclick="doFetchRow('tt_products','single',896,2);" id="###PRODUCT_SIZE_ID###" title="2">###PRODUCT_IMAGE3:MINI###</span>