I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis der ikke direkte står nogen bredde - altså hverken i cellen eller stylesheetet - så kan du få fat i den sådan her: <table> <tr> <td onclick="alert(this.offsetWidth);">ffdf</td> </tr> </table>
Det du kan gøre er at give billedet og cellen en ID og derefter gøre sådan her: <script type="text/javascript"> function getWidth() { if (document.getElementById('bld').offsetWidth > document.getElementById('celle').width) { document.getElementById('bld').width = document.getElementById('celle').width; } } </script>
du skal jo nok gøre på et tidspunkt hvor du ved billederne og tabellen er loadet færdig, så jeg vil foreslå at du gør sådan her: <body onload="get_width('pic', 'pic_table');"> <table> <tr> <td id="pic_table" width="150"> <img id="pic" src="bld.png"> </td> </table> </body>
Funktionen er jo direkte til for at aflæse cellens størrelse.
tænker du på noget i den her stil: <script type="text/javascript"> function resizePics(tbl) { var imgArr = document.getElementById(tbl).getElementsByTagName("IMG"); for (i=0;i<imgArr.length;i++) { if (imgArr[i].width > imgArr[i].parentNode.width) { imgArr[i].width = imgArr[i].parentNode.width; } } } </script>
funktionen kræver dog at billedet er direkte inde i en celle med en bestemt bredde - ikke noget med at sætte den ind i et link-element eller andet. Så skal den laves lidt om (i grunden skal du bare tilføje et par .parentNode efter det oprindelige .parentNode i funktionen).
altså tanken var at du _skal_ sætte en bredde på cellen (med width=et eller andet). Hvis cellen ikke har en bestemt bredde vil billedet som standard bruge mere plads end den måske skulle have lov til - og scriptet kan jo ikke selv finde ud af hvor bred den skal være.
men jeg kan godt se problemmet, så her er en lidt nyere udgave: <script type="text/javascript"> function resizePics(tbl) { if (document.getElementById(tbl)) { var imgArr = document.getElementById(tbl).getElementsByTagName("IMG"); for (i=0;i<imgArr.length;i++) { if (imgArr[i].width > imgArr[i].parentNode.width && imgArr[i].parentNode.width > 0) { imgArr[i].width = imgArr[i].parentNode.width; } } } } </script>
Hvis du gerne også vil bruge CSS til at bestemme bredden må du lige sige til...
nej, hva' skidt jeg gør det alligevel: <script type="text/javascript"> function resizePics(tbl) { if (elm = document.getElementById(tbl)) { var imgArr = elm.getElementsByTagName("IMG"); for (i=0;i<imgArr.length;i++) { bredde = (imgArr[i].parentNode.style.width) ? parseInt(imgArr[i].parentNode.style.width) : imgArr[i].parentNode.width; if (imgArr[i].width > bredde && bredde > 0) { imgArr[i].width = bredde; } } } } </script> Nu kan du også bruge stylesheets (bare hver opmærksom på at scriptet forventer at du har angivet det i pixels.
det cellen jeg mente du skulle sætte bredden på - ikke tabellen. Sådan har jeg forstået dit spørgsmål i hvert fald. Din HTML skulle meget gerne se sådan ud i stedet: <table id="pic_table" width="400"> <tr> <td width="400"> <img src="bld1.png"> <!-- Dette billede må højest blive 400 pixels bred, da cellen også er det --> </td> </tr> </table>
Ja, jeg tænkte du måske kunne finde på at sætte bredden med en style - altså style="width:400px;".
dvs. så du kan gøre noget i den her stil: <table id="pic_table" width="400"> <tr> <td> <img id="pic[3]" src="bld.png"> </td> </tr> </table>
Jo, så skal du bare tilføje et par parentNode: (har også lige slettet muligheden for at bruge CSS) <script type="text/javascript"> function resizePics(tbl) { if (elm = document.getElementById(tbl)) { var imgArr = elm.getElementsByTagName("IMG"); for (i=0;i<imgArr.length;i++) { bredde = imgArr[i].parentNode.parentNode.parentNode.parentNode.width; if (imgArr[i].width > bredde && bredde > 0) { imgArr[i].width = bredde; } } } } </script>
ad, det var da dumt gjort. Du kan jo ligeså godt gøre sådan her: <script type="text/javascript"> function resizePics(tbl) { if (elm = document.getElementById(tbl)) { bredde = document.getElementById(tbl).width; var imgArr = elm.getElementsByTagName("IMG"); for (i=0;i<imgArr.length;i++) {
hvis vi går ud fra at billedet kun skal resizes når det fylder mere end tabellens egentlige bredde, så kan man til nøds godt gøre sådan her: <script type="text/javascript"> function resizePics(tbl) { if (elm = document.getElementById(tbl)) { temp_bredde = elm.width; bredde = (temp_bredde.toString().indexOf('%') != -1) ? Math.round(elm.parentNode.offsetWidth/100*parseInt(temp_bredde)) : temp_bredde; var imgArr = elm.getElementsByTagName("IMG"); for (i=0;i<imgArr.length;i++) {
nææ, tænkte man ligeså godt kunne ordne det hele i en mundfuld. Men det kunne da godt lade sig gøre på den måde ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.