Вместо того, чтобы использовать display:none;
, почему бы вам не использовать disabled
prop?
В любом случае, вы могли бы сделать что-то подобное, получив каждые tr
и проверив, если input
s отключены Если вы действительно хотите использовать display:none
, просто замените
input.disabled
на input.style.display === "none"
Если все входы в tr
отключены, строка таблицы будет скрыта. [1120 ]
Используйте addEventListener
, чтобы убедиться, что страница загружена перед запуском вашего javascript ИЛИ , чтобы ваш скрипт был в конце вашей HTML-страницы.
style="display=none"
неверно. Используйте style="display:none;"
window.addEventListener("load", ()=>{
Array.from(document.getElementsByTagName("tr")).forEach(tr => {
const shouldDisable =
Array.from(tr.querySelectorAll("input"))
.every(input => input.disabled);
if(shouldDisable){
tr.style.display = "none"
}
});
});
<form id="formid">
<table>
<tbody>
<tr>
<td>
<input type="checkbox">
<input type="text" style="display:none;">
</td>
</tr>
<tr>
<td>
<input type="checkbox " style="display:none;">
<input type="text" style="display:none;">
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>
<input type="checkbox" style="display:none;">
<input type="text" style="display:none;">
</td>
</tr>
<tr>
<td>
<input type="checkbox " style="display:none;">
<input type="text " style="display:none;">
</td>
</tr>
</tbody>
Используя ghc -e
в значительной степени эквивалентно вызову ghci
. Я полагаю что GHC's runhaskell
компилирует код во временный исполняемый файл прежде, чем выполнить его, в противоположность интерпретации его как ghc -e
/ghci
, но я не на 100% уверен.
$ time echo 'Hello, world!'
Hello, world!
real 0m0.021s
user 0m0.000s
sys 0m0.000s
$ time ghc -e 'putStrLn "Hello, world!"'
Hello, world!
real 0m0.401s
user 0m0.031s
sys 0m0.015s
$ echo 'main = putStrLn "Hello, world!"' > hw.hs
$ time runhaskell hw.hs
Hello, world!
real 0m0.335s
user 0m0.015s
sys 0m0.015s
$ time ghc --make hw
[1 of 1] Compiling Main ( hw.hs, hw.o )
Linking hw ...
real 0m0.855s
user 0m0.015s
sys 0m0.015s
$ time ./hw
Hello, world!
real 0m0.037s
user 0m0.015s
sys 0m0.000s
Как трудно это должно просто скомпилировать все Ваши "сценарии" прежде, чем выполнить их?
А-ч, обеспечение двоичных файлов для нескольких архитектуры является болью действительно. Я шел по той дороге прежде, и это не много забавы...
К сожалению, я не думаю, что возможно сделать любой запуск компилятора Haskell наверху немного лучше. Декларативный характер языка означает, что необходимо прочитать всю программу сначала даже прежде, чем попробовать к typecheck что-либо, nevermind выполнение и затем Вы или перенести стоимость анализа строгости или ненужной лени и преобразования.
Популярные языки 'сценариев' (оболочка, Perl, Python, и т.д.) и основанные на ML языки требуют только единственной передачи... хорошо хорошо, ML требует статической передачи typecheck, и Perl имеет эту забавную схему с 5 передачами (с двумя из них работающий наоборот); так или иначе быть процедурным означает, что компилятор/интерпретатор имеет намного легче из задания, собирающего биты программы вместе.
Короче говоря, я не думаю, что возможно стать намного лучше, чем это. Я не протестировал, чтобы видеть, имеют ли Объятия или GHCi более быстрый запуск, но какое-либо различие, там все еще faaar далеко от языков non-Haskell.
Если Вы действительно обеспокоены скоростью, Вы собираетесь быть затрудненными путем перепарсинга кода для каждого запуска. Haskell не должен быть выполнен от интерпретатора, скомпилируйте его с GHC, и необходимо получить превосходную производительность.
У Вас есть две части к этому вопросу:
Если Вы заботитесь о производительности, единственная серьезная опция является GHC, который очень очень быстр: http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=all
Если бы Вы хотите что-то легкое для сценариев Unix, я использовал бы GHCi. Это о 30x быстрее, чем Объятия, но также и поддерживает все библиотеки по hackage.
Так установите GHC теперь (и получите GHCi бесплатно).
Почему бы не создать скрипт front-end, который компилирует скрипт, если он не был скомпилирован ранее или если скомпилированная версия устарела.
Вот основная идея, этот код можно улучшить - искать путь, а не считать, что все находится в одной директории, лучше обрабатывать другие расширения файлов и т.д. Также я довольно зеленый в кодировании haskell (ghc-compiled-script.hs):
import Control.Monad
import System
import System.Directory
import System.IO
import System.Posix.Files
import System.Posix.Process
import System.Process
getMTime f = getFileStatus f >>= return . modificationTime
main = do
scr : args <- getArgs
let cscr = takeWhile (/= '.') scr
scrExists <- doesFileExist scr
cscrExists <- doesFileExist cscr
compile <- if scrExists && cscrExists
then do
scrMTime <- getMTime scr
cscrMTime <- getMTime cscr
return $ cscrMTime <= scrMTime
else
return True
when compile $ do
r <- system $ "ghc --make " ++ scr
case r of
ExitFailure i -> do
hPutStrLn stderr $
"'ghc --make " ++ scr ++ "' failed: " ++ show i
exitFailure
ExitSuccess -> return ()
executeFile cscr False args Nothing
Теперь мы можем создавать скрипты, такие как этот (hs-echo.hs):
#! ghc-compiled-script
import Data.List
import System
import System.Environment
main = do
args <- getArgs
putStrLn $ foldl (++) "" $ intersperse " " args
А теперь запускаем его:
$ time hs-echo.hs "Hello, world\!"
[1 of 1] Compiling Main ( hs-echo.hs, hs-echo.o )
Linking hs-echo ...
Hello, world!
hs-echo.hs "Hello, world!" 0.83s user 0.21s system 97% cpu 1.062 total
$ time hs-echo.hs "Hello, world, again\!"
Hello, world, again!
hs-echo.hs "Hello, world, again!" 0.01s user 0.00s system 60% cpu 0.022 total