Jump to content

IE Form background color


 Share

Recommended Posts

I want to change the background color of an IE form element.

$oForm = _IEFormGetObjByName ($oIE, "form1")
$oElems =  _IEFormElementGetCollection ($oForm)
For $oElem in $oElems
  if StringInStr(StringRight($oElem.id,9),"name_name") > 0 Then
   $oTboxName = $oElem
   ; here I want to find the $oElem parent form and change its background color

  EndIf
Next

So I need to go up the DOM to find the parent <form> and then set its background color. How would I do this?

Link to comment
Share on other sites

In your example, the parent is $oForm. Why would you need to go looking for it?

As for the style attribute backgroundColor:

#include <IE.au3>

$oIE = _IE_Example("Form")
$oForm = _IEFormGetObjByName($oIE, "ExampleForm")
$iColor = $oForm.style.backgroundColor ; 0 = transparent (default)
ConsoleWrite("$iColor = " & $iColor & @LF)
$oForm.style.backgroundColor = 0xFFFF00 ; Yellow
$iColor = $oForm.style.backgroundColor
ConsoleWrite("$iColor = " & $iColor & @LF)

:(

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Sorry, I stated the problem incorrectly. I'm looking for a specific <table> on the page and want to change the background color of just that table.

In fact I know the table's class. Here is the HTML of the table:

<table class="controlContainer" cellSpacing="0" cellPadding="0" border-top border="0">

There are actually 3 tables on the page with this class and I want to change the background color of all 3.

Link to comment
Share on other sites

OK...

#include <IE.au3>

$oIE = _IE_Example("Table")
$co1Tables = _IETableGetCollection($oIE)
For $oTable In $co1Tables
    $iColor = $oTable.style.backgroundColor ; 0 = transparent (default)
    ConsoleWrite("$iColor = " & $iColor & @LF)
    $oTable.style.backgroundColor = 0xFFFF00 ; Yellow
    $iColor = $oTable.style.backgroundColor
    ConsoleWrite("$iColor = " & $iColor & @LF)
Next

Yellow tables.

:(

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

C'mon dude, show some effort!

Get the collection, loop through it testing each one for your conditions. The property you're looking for is .className.

:(

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Using Psalty's method:

For $oTable In $oTables 
 $oTable.style.backgroundColor = 0xFFFF00 ; Yellow 
Next

will set all of the table backgrounds on the page to yellow. However, when I find just the tables I want, it does not work.

For $oTable In $oTables 
 If String($oTable.className) = "controlContainer" Then 
  $oTable.style.backgroundColor = 0xFFFF00 ; Yellow 
 EndIf 
Next

What am I missing here?

[Edit to add] The filter on "controlContainer" does work and find the 3 tables I'm looking for.

Edited by Capel
Link to comment
Share on other sites

Can't replicate your problem. This sets the style of the second table only to "controlContainer", then uses that to ID the one for yellow background:

#include <IE.au3>

$oIE = _IE_Example("Table")
$oTable = _IETableGetCollection($oIE, 1) ; second table
$oTable.className = "controlContainer"

$co1Tables = _IETableGetCollection($oIE)
For $oTable In $co1Tables
    If ($oTable.className & "") = "controlContainer" Then
        $iColor = $oTable.style.backgroundColor ; 0 = transparent (default)
        ConsoleWrite("$iColor = " & $iColor & @LF)
        $oTable.style.backgroundColor = 0xFFFF00 ; Yellow
        $iColor = $oTable.style.backgroundColor
        ConsoleWrite("$iColor = " & $iColor & @LF)
    Else
        ConsoleWrite("Skipped one table..." & @LF)
    EndIf
Next

:(

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Well, actually, I didn't realize until you asked that this machine wasn't updated. :)

So I was checking against 3.3.4.0 Prod.

However, I just updated this box to 3.3.6.0 Prod and it still works fine:

>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Program Files\AutoIt3\Scripts\Test1.au3" /autoit3dir "C:\Program Files\AutoIt3" /UserParams

+>15:30:08 Starting AutoIt3Wrapper v.2.0.1.22 Environment(Language:0409 Keyboard:00000409 OS:WIN_XP/Service Pack 3 CPU:X86 OS:X86)

>Running AU3Check (1.54.19.0) from:C:\Program Files\AutoIt3

+>15:30:08 AU3Check ended.rc:0

>Running:(3.3.6.0):C:\Program Files\AutoIt3\autoit3.exe "C:\Program Files\AutoIt3\Scripts\Test1.au3"

Skipped one table...

$iColor = 0

$iColor = #ffff00

+>15:30:16 AutoIT3.exe ended.rc:0

>Exit code: 0 Time: 10.135

:(

Edited by PsaltyDS
Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...