hur plockar jag ut det som står i en länks rel="" på bästa sätt ?
plocka ur rel
13 svar · 677 visningar · startad av Fuel
Leta rätt på DOM-noden och kör getAttribute("rel"); på objektet?
Jaha, det kan finnas flera värden i samma rel-atribut. Om du vill testa efter endast ett av de kan du använda en regexp:
if(/(^|\s)nofollow($|\s)/.test(mmmmm.getAttribute("rel"))){
}
Kan stämma... IE har ju en ful vana att göra lite allt möjligt uppercase. Men så har faktiskt IE historiskt sett aldrig haft stöd för HTML, utan den snarlika varianten MSHTML.
Jag uppdaterade min kod medan nitro postade. :)
Kollade du samtidigt upp om IE uppercaseade?
Nej, jag är osäker på vilkensom IE uppercasear, antingen är det det man får ut eller så är det rel-attributet i sig. Har tyvärr inte IE på min mac. :)
Din kod kan mycket vl fungera felfritt i IE. Felet brukar komma nr man leker med setAttribute och man får för sig att sätta nånting med samma namn fast annan skiftläge.
så här långt har jag kommit .. dock vill inte funktionen do_sub köras ?
function find_sub_menus()
{
var submenu = document.getElementsByTagName("a");
for (i = 0;i < submenu.length;i++)
{
if(submenu[i].rel.indexOf("submenu") != -1)
{
var attrib = submenu[i].rel.split(" ");
if (attrib[2] != null)
{
var u = attrib[2];
}
submenu[i].onclick = do_sub(u);
submenu[i].title = submenu[i].title + " - Open submenu";
}
}
}
Raden submenu.onclick = do_sub(u);** är åt skogen (Om inte funktionen do_sub skapar en ny funktion och returnerar.)
Dessutom så definierar du u lokalt inuti if-satsen, vilket gör att u inte är åtkomlig utanför den.
Dessa två fel ihop gör att do_sub körs från find_sub_menus och (troligen) dessutom genererar ett fel pga att u är odefinierad.
och så är det inte null du ska leta efter, utan undefined-värden.
Jag skulle gissa på något sådant här:
Edit 2: Mitt fel. Jag glömde en viktig detalj.
function find_sub_menus()
{
var submenu = document.getElementsByTagName("a");
for (i = 0;i < submenu.length;i++)
{
if(submenu[[b][/b]i].rel.indexOf("submenu") != -1)
{
var attrib = submenu[[b][/b]i].rel.split(" ");
if ('undefined' != [b]typeof[/b] attrib[2])
{
var u = attrib[2];
submenu[[b][/b]i].onclick = function(){
do_sub(u);
}
submenu[[b][/b]i].title = submenu[[b][/b]i].title + " - Open submenu";
}
}
}
}
En annan sak här: Är du medveten om att attrib[2] pekar mot det tredje attributet i rel? Detta eftersom indexen räknas från 0. Om du bara har två attribut, t ex submenu och en kategori, så ska du byta ut tvåan mot en etta.
Sen finns det säkert ett bättre sätt att göra detta till att börja med, men det är sånt jag borde hyra ut mig själv som konsult för att fixa...
Edit: fixade till ett par saker i koden.
ja nu är inte jag nån rocky på javascript men..
do_sub får rätt värde men det blir ändå undefined när jag kör den vi denna funktion .. kör jag do_sub via en onclick länk så fungerar den
function find_sub_menus()
{
var submenu = document.getElementsByTagName("a");
for (i = 0;i < submenu.length;i++)
{
if(submenu[i].rel.indexOf("submenu") != -1)
{
var attrib = submenu[i].rel.split(" ");
if ('undefined' != attrib[1])
{
submenu[i].onclick = function()
{
edi_submenu(attrib[1]);
}
submenu[i].title = submenu[i].title + " - Open submenu";
}
}
}
}
function edi_submenu(was)
{
var ed_loading_image = "<img src=\"images/loading.gif\" alt=\"Loading...\" />";
var ed_output_div = document.getElementById('edi-submenu');
var ed_query_string = "?submenu=" + was;
var ed_ajax_request;
ed_output_div.innerHTML = ed_loading_image + " Requesting content...";
try
{
ed_ajax_request = new XMLHttpRequest();
}
catch (e)
{
try
{
ed_ajax_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
ed_ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Ellol: " + e.description);
return false;
}
}
}
ed_ajax_request.onreadystatechange = function()
{
try
{
if(ed_ajax_request.readyState == 4)
{
if (ed_ajax_request.status == 200)
{
ed_output_div.innerHTML = ed_ajax_request.responseText;
}
}
}
catch(e)
{
alert("Ellol: " + e.description);
}
}
ed_ajax_request.open("GET", "includes/edi-submenu.php" + ed_query_string, true);
ed_ajax_request.send(null);
}
Oj, nu klickade jag redigera istället för citera. Men kolla mitt redigerade inlägg nu.
nope