NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Следующие работы для меня в Firefox и IE7... инструкция, хотя: при установке ширины на элементе не устанавливайте поле или дополняющий на том же элементе. Это сохраняется особенно , если Вы - смесители - говорят, смешивая проценты и пиксели.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Test</title>
</head>
<body>
<div style="width: 500px; background-color:#F33;">
This is the outer div
<div style="background-color: #FAA; padding: 10px; margin:10px;">
This is the inner div
<table cellpadding="0" cellspacing="0" style="width: 100%">
<tr>
<td style="border: 1px solid blue; background-color:#FEE;">Here is my td</td>
</tr>
</table>
</div>
</div>
</body>
</html>
См. здесь для примера.
Основанные на проценте ширины относительно первого родительского элемента, которому определили ширину. Если Вашему отделению не определили ширину тогда, ширина таблицы не имеет никакого отношения к нему. Можно ли отправить упрощенную версию разметки, которая показывает то, на что Ваш DOM
похоже дерево?
От другого угла, если Вашему родительскому отделению ДЕЙСТВИТЕЛЬНО устанавливали ширину и поле, все еще влияет на Вашу таблицу тогда, Вы находитесь, вероятно, в режиме причуд. Вы определили Ваш DOCTYPE
, но знать, что DOCTYPE
элемент ДОЛЖЕН быть первой строкой в файле. Что-то еще для замечания при контакте с IE6
, по умолчанию, если содержание более широко, чем родитель, родитель, будет расширено для размещения, можно остановить это путем добавления overflow: hidden
к Вашему css
для родительского элемента, но в процессе Вы могли бы затенить часть содержания дочернего элемента.
Едва ли уверенный, что проблема здесь - это хорошо работает в IE6/7 и FF3. Установка ширины .container элемента DIV устанавливает таблицу width. Добавление полей .container отделению не влияет на таблицу. Возможно, существует что-то еще в Вашей разметке / CSS, это влияет на расположение?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Boxes and Tables</title>
<style type="text/css">
div.container {
background-color: yellow;
border: 1px solid #000;
width: 500px;
margin: 5px auto;
}
table.contained {
width: 100%;
border-collapse: collapse;
}
table td {
border: 2px solid #999;
}
</style>
</head>
<body>
<div class="container">
<table class="contained">
<thead>
<tr><th>Column1</th><th>Column2</th><th>Column3</th></tr>
</thead>
<tbody>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
<tr><td>Value</td><td>Value</td><td>Value</td></tr>
</tbody>
</table>
</div>
</body>
</html>
В случае, где Вы автоматически генерируете код, который может иметь поля на нем, добавляя простое, нестилизованное <div>
, элемент, обертывающий Вашу таблицу, мог бы добиться цели.
Я выяснил основу проблемы здесь. Это имеет отношение border-collapse
. У меня была эта та же проблема некоторое время теперь. Так как таблицы часто имеют тонкие рамки, проблема не очевидна для большинства людей. При помещении постоянного столика с набором ширины к 100% в отделении как Nate имеет, Вы будете в порядке.
Однако, если Вы определяете border-collapse:collapse
на таблице, таблица убежит из отделения. Это не очевидно для большинства людей, потому что это может только вспыхнуть на один пиксель, или в зависимости от контекста это находится в и агент пользователя, возможно, нисколько.
Для создания этого более ясным, что продолжается попробуйте это: Поместите пример Nate рядом с примером David Heggie в файле HTML.
будет похоже, что оба хорошо работают. Но теперь, изменение встроенные TD Nate разрабатывают к border: 40px solid blue
. Измените таблицу David td стиль к border: 40px solid #999;
. На данном этапе таблица David убегает из отделения 50% его границы на каждой стороне. Nate все еще работает. Поместите border-collapse:collapse
стиль на таблице Nate и его повреждениях теперь также.
Это border-collapse
, который вызывает его!
Это - большая проблема со способом, которым CSS рассматривает свойство width и причину, Microsoft реализовала модель поля по-другому сначала. Microsoft проиграла, и теперь это - или ширина или поле/дополнение/граница для элемента.
ситуация может измениться на лучше в CSS3 с измеряющее поле свойство
Возможно, эта обширная статья приблизительно Internet Explorer и модель фрагмента CSS поможет?
попробуйте это:
div {
padding: 0px;
}
table {
width: 100%;
margin: 0px;
}
путем обнуления дополнения отделения, Вы удалите пространство между границами отделения и содержанием его. путем установки ширины таблицы к 100% и это - поле для обнуления, Вы удалите пространство между границами таблицы, и это - контейнер.
Кстати, есть ли серьезное основание для Вас не использовать строгий doctype? строгий должно всегда быть значение по умолчанию. переходный только предназначается для унаследованного кода.